[
  {
    "path": ".envrc",
    "content": "#!/bin/bash\n\n# Automatically sets up your devbox environment whenever you cd into this\n# directory via our direnv integration:\n\neval \"$(devbox generate direnv --print-envrc)\"\n\n# check out https://www.jetify.com/docs/devbox/ide_configuration/direnv/\n# for more details\n"
  },
  {
    "path": ".gh-dash.yml",
    "content": "# yaml-language-server: $schema=https://gh-dash.dev/schema.json\nprSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash updated:>={{ nowModify \"-3w\" }} sort:updated-desc\n    layout:\n      author:\n        hidden: true\n      repoName:\n        hidden: true\n  - title: Review\n    filters: repo:dlvhdr/gh-dash -author:@me is:open updated:>={{ nowModify \"-2.5w\" }}\n    layout:\n      repoName:\n        hidden: true\n  - title: All\n    filters: repo:dlvhdr/gh-dash\nissuesSections:\n  - title: Open\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions\n  - title: Bugs\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions label:bug\n  - title: Features\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions label:feat\n  - title: High\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions label:high-pri\n  - title: Mid\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions label:mid-pri\n  - title: Low\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions label:low-pri\n  - title: Unlabeled\n    filters: repo:dlvhdr/gh-dash is:open sort:reactions -label:bug -label:feat\n  - title: All\n    filters: repo:dlvhdr/gh-dash sort:reactions\n\ndefaults:\n  view: prs\n  refetchIntervalMinutes: 5\n  layout:\n    prs:\n      repoName:\n        hidden: true\n      base:\n        hidden: true\n\n  preview:\n    open: true\n  prsLimit: 20\n  issuesLimit: 20\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "github: [dlvhdr]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: bug\nassignees: \"\"\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n\n- OS: [e.g. Mac]\n- Terminal Emulator\n- Using tmux?\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "# Summary\n\n- [] Closes issue #...\n- [] I have read the [CONTIBUTING.md](../CONTRIBUTING.md) and [AI_POLICY.md](../AI_POLICY.md) guides\n\n## How Did You Test this Change?\n\n## Images/Videos\n\n<!-- if relevant, please include any relevant images that show off how your feature is\nworking -->\n"
  },
  {
    "path": ".github/workflows/build-and-test.yaml",
    "content": "name: build and test\n\non:\n  pull_request:\n    paths-ignore:\n      - \"docs/**\"\n\npermissions:\n  contents: read\n\njobs:\n  build-and-test:\n    name: Build and test\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v5\n      - name: Install Go\n        uses: actions/setup-go@v6\n        with:\n          go-version-file: ./go.mod\n      - name: Download Go modules\n        run: go mod download\n      - name: Build\n        run: go build ./...\n      - name: Test\n        run: go test ./...\n\n  dependabot:\n    needs: [build-and-test]\n    runs-on: ubuntu-latest\n    permissions:\n      pull-requests: write\n      contents: write\n    if: ${{ github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'}}\n    steps:\n      - id: metadata\n        uses: dependabot/fetch-metadata@08eff52bf64351f401fb50d4972fa95b9f2c2d1b # v2.4.0\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      - run: |\n          gh pr review --approve \"$PR_URL\"\n          gh pr merge --squash --auto \"$PR_URL\"\n        env:\n          PR_URL: ${{github.event.pull_request.html_url}}\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/build-docs.yaml",
    "content": "name: Build Docs\n\non:\n  pull_request:\n    paths:\n      - \"docs/**\"\n  workflow_dispatch:\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout your repository using git\n        uses: actions/checkout@v6\n      - name: Install, build, and upload your site output\n        uses: withastro/action@v5\n        with:\n          path: ./docs\n"
  },
  {
    "path": ".github/workflows/dependabot-sync.yml",
    "content": "name: dependabot-sync\non:\n  schedule:\n    - cron: \"0 0 * * 0\" # every Sunday at midnight\n  workflow_dispatch: # allows manual triggering\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  dependabot-sync:\n    uses: charmbracelet/meta/.github/workflows/dependabot-sync.yml@main\n    with:\n      repo_name: ${{ github.event.repository.name }}\n    secrets:\n      gh_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/go-release.yml",
    "content": "name: goreleaser\n\non:\n  push:\n    tags:\n      - \"*\"\n\npermissions:\n  contents: write\n\njobs:\n  goreleaser:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - name: Set up Go\n        uses: actions/setup-go@v5\n        with:\n          go-version: \">=1.21.0\"\n          cache: true\n      - name: Run GoReleaser\n        uses: goreleaser/goreleaser-action@v6\n        with:\n          distribution: goreleaser\n          version: \"~> v2\"\n          args: release --clean --draft\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}\n          DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}\n          BLUESKY_APP_PASSWORD: ${{ secrets.BLUESKY_APP_PASSWORD }}\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: lint\non:\n  pull_request:\n\npermissions:\n  contents: read\n\njobs:\n  golangci:\n    name: lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-go@v5\n        with:\n          go-version: stable\n      - name: golangci-lint\n        uses: golangci/golangci-lint-action@v9\n"
  },
  {
    "path": ".github/workflows/publish-docs.yaml",
    "content": "name: Build and Push Docs Docker image\n\non:\n  push:\n    branches: [\"main\"]\n    paths:\n      - \"docs/**\"\n\njobs:\n  build-and-push-dockerfile-image:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v3\n\n      - name: Log in to Docker Hub\n        uses: docker/login-action@v2\n        with:\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v4\n        with:\n          context: \"{{defaultContext}}:docs\"\n          secrets: |\n            gh_token=${{ secrets.GH_TOKEN }}\n          file: ./Dockerfile\n          push: ${{ github.event_name == 'push' }}\n          # Make sure to replace with your own namespace and repository\n          tags: |\n            dlvhdr/gh-dash-docs:latest\n          platforms: linux/amd64\n"
  },
  {
    "path": ".gitignore",
    "content": "debug.log\ndist\ngh-prs\n/gh-dash\n.direnv/\n/result*\n.DS_Store\n.killgrave.log\ndocs/broken-links.log\n.devbox\n__debug*\ntestdata/gh-schema.graphql\n"
  },
  {
    "path": ".golangci.yml",
    "content": "version: \"2\"\nlinters:\n  enable:\n    - bodyclose\n    # - exhaustive\n    # - goconst\n    # - godot\n    # - godox\n    # - gomoddirectives\n    - goprintffuncname\n    # - gosec\n    - misspell\n    # - nakedret\n    # - nestif\n    # - nilerr\n    # - noctx\n    - nolintlint\n    # - prealloc\n    # - revive\n    - rowserrcheck\n    - sqlclosecheck\n    - staticcheck\n    - tparallel\n    # - unconvert\n    # - unparam\n    - whitespace\n    # - wrapcheck\n  disable:\n    - errcheck\n    - ineffassign\n    - unused\n  exclusions:\n    generated: lax\n    presets:\n      - common-false-positives\n    rules:\n      - text: '(slog|log)\\.\\w+'\n        linters:\n          - noctx\nissues:\n  max-issues-per-linter: 0\n  max-same-issues: 0\nformatters:\n  enable:\n    - gofumpt\n    - goimports\n    - golines\n  settings:\n    golines:\n      chain-split-dots: true\n  exclusions:\n    generated: lax\n"
  },
  {
    "path": ".goreleaser.yaml",
    "content": "version: 2\n\nbefore:\n  hooks:\n    - go mod tidy\n\ngomod:\n  proxy: true\n  env:\n    - GOPROXY=https://proxy.golang.org,direct\n    - GOSUMDB=sum.golang.org\n    - GOPRIVATE=github.com/dlvhdr/gh-dash\n  mod: mod\n\nbuilds:\n  - env:\n      - CGO_ENABLED=0\n    flags:\n      - -tags=nodbus\n    goos:\n      - android\n      - freebsd\n      - linux\n      - windows\n      - darwin\n    goarch:\n      - amd64\n      - arm64\n      - arm\n      - \"386\"\n    goarm:\n      - \"7\"\n    ldflags:\n      - -s -w\n      - -X github.com/dlvhdr/gh-dash/cmd.Version={{.Version}}\n      - -X github.com/dlvhdr/gh-dash/cmd.Commit={{.Commit}}\n      - -X github.com/dlvhdr/gh-dash/cmd.Date={{.CommitDate}}\n      - -X github.com/dlvhdr/gh-dash/cmd.BuiltBy=goreleaser\n    # Skipping builds for Android non-ARM64 architectures as they need CGO enabled\n    # https://goreleaser.com/limitations/cgo/\n    ignore:\n      - goos: android\n        goarch: amd64\n      - goos: android\n        goarch: arm\n      - goos: android\n        goarch: \"386\"\n      - goos: windows\n        goarch: arm\n\narchives:\n  - formats:\n      - binary\n    name_template: \"gh-dash_{{ .Tag }}_{{ .Os }}-{{ .Arch }}{{if .Arm}}_{{.Arm}}{{end}}\"\nchecksum:\n  name_template: \"checksums.txt\"\nsnapshot:\n  version_template: \"{{ incpatch .Version }}-next\"\n\nrelease:\n  header: |\n    # {{ .Version }}\n\n    <!-- what's new in this version? -->\n\n    To update run:\n    ```bash\n    gh extension upgrade dash\n    ```\n\n  footer: |\n    ---\n\n    If you enjoy `dash`, consider [making a donation](https://www.gh-dash.dev/donating) ❤️\n\n    Have questions? Join our [Discord community](https://discord.gg/SXNXp9NctV)!\n\n    <br />\n\n    <a  class=\"underline: none;\" href=\"https://gh-dash.dev\">\n      <picture>\n        <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://gh-dash.dev/logo.png\">\n        <img alt=\"DASH Logo\" width=\"600\" src=\"https://gh-dash.dev/logo-light.png\">\n      </picture>\n    </a>\n\nannounce:\n  bluesky:\n    enabled: true\n    username: \"dlvhdr.me\"\n    # message_template: (Default) '{{ .ProjectName }} {{ .Tag }} is out! Check it out at {{ .ReleaseURL }}'.\n\n  discord:\n    enabled: true\n    color: \"8037112\"\n    icon_url: \"https://www.gh-dash.dev/favicon.png\"\n    # message_template: (Default) '{{ .ProjectName }} {{ .Tag }} is out! Check it out at {{ .ReleaseURL }}'.\n\nchangelog:\n  sort: asc\n  use: github\n  filters:\n    exclude:\n      - \"^test:\"\n      - \"^chore\"\n      - \"merge conflict\"\n      - Merge pull request\n      - Merge remote-tracking branch\n      - Merge branch\n      - go mod tidy\n  groups:\n    - title: Dependency updates\n      regexp: \"^.*\\\\(deps\\\\)*:+.*$\"\n      order: 300\n    - title: \"New Features\"\n      regexp: \"^.*feat[(\\\\w)]*:+.*$\"\n      order: 100\n    - title: \"Bug fixes\"\n      regexp: \"^.*fix[(\\\\w)]*:+.*$\"\n      order: 200\n    - title: \"Documentation updates\"\n      regexp: \"^.*docs[(\\\\w)]*:+.*$\"\n      order: 400\n    - title: Other work\n      order: 9999\n"
  },
  {
    "path": "AI_POLICY.md",
    "content": "# AI Usage Policy\n\nThis project has strict rules for AI usage:\n\n- **All AI usage in any form must be disclosed.** You must state\n  the tool you used (e.g. Claude Code, Cursor, Amp) along with\n  the extent that the work was AI-assisted.\n\n- **The human-in-the-loop must fully understand all code.** If you\n  can't explain what your changes do and how they interact with the\n  greater system without the aid of AI tools, do not contribute\n  to this project.\n\n- **Issues and discussions can use AI assistance but must have a full\n  human-in-the-loop.** This means that any content generated with AI\n  must have been reviewed _and edited_ by a human before submission.\n  AI is excellent at being overly verbose and including noise that\n  distracts from the main point. Humans must do their research and\n  trim this down.\n\n- **No AI-generated media is allowed (art, images, videos, audio, etc.).**\n  Text and code are the only acceptable AI-generated content, per the\n  other rules in this policy.\n\nThese rules apply only to outside contributions. Maintainers\nare exempt from these rules and may use AI tools at their discretion;\nthey've proven themselves trustworthy to apply good judgment.\n\n## There Are Humans Here\n\nPlease remember that this project is maintained by humans.\n\nEvery discussion, issue, and pull request is read and reviewed by\nhumans (and sometimes machines, too). It is a boundary point at which\npeople interact with each other and the work done. It is rude and\ndisrespectful to approach this boundary with low-effort, unqualified\nwork, since it puts the burden of validation on the maintainer.\n\nIn a perfect world, AI would produce high-quality, accurate work\nevery time. But today, that reality depends on the driver of the AI.\nAnd today, most drivers of AI are just not good enough. So, until either\nthe people get better, the AI gets better, or both, we have to have\nstrict rules to protect maintainers.\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing To `gh-dash`\n\nThank you for investing your time in contributing to our project!\n\nIn this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.\n\n## The Critical Rule\n\n- The most important rule: you must understand your code. If you can't explain what your changes do and how they interact with the greater system without the aid of AI tools, do not contribute to this project.\n- The second most important rule: when you submit a PR you must be willing to address comments and maintain this code. Dot not submit drive-by PRs that solve your own issue without the willingness to iterate on it. Keep these in your own fork.\n- Using AI to write code is fine. You can gain understanding by interrogating an agent with access to the codebase until you grasp all edge cases and effects of your changes. What's not fine is submitting agent-generated slop without that understanding. Be sure to read the [AI Usage Policy](AI_POLICY.md).\n\n## AI Usage\n\nThe project has strict rules for AI usage. Please see the [AI Usage Policy](AI_POLICY.md). This is very important.\n\n## Quick Guide\n\n### I Have an Idea for a Feature\n\nLike bug reports, first search through both issues and discussions and try to find if your feature has already been requested. Otherwise, open a discussion in the [\"Feature Requests, Ideas\"](https://github.com/dlvhdr/gh-dash/issues/new?template=feature_request.md) category.\n\n### I've Implemented a Feature\n\n- If there is an issue for the feature, open a pull request straight away.\n- If there is no issue, open a discussion and link to your branch.\n- If you want to live dangerously, open a pull request and hope for the best.\n\n### I Have a Question Which Is Neither a Bug Report nor a Feature Request\n\nOpen a [Q&A discussion](https://github.com/dlvhdr/gh-dash/discussions/categories/q-a), or join our [Discord Server](https://discord.gg/SXNXp9NctV) and ask away in the #help forum channel.\n\n## Working on the Code\n\n### Installing Required Tooling\n\nOur project uses [Devbox](https://github.com/jetpack-io/devbox) to manage its development environment.\n\nUsing Devbox will get your dev environment up and running easily and make sure we're all using the same tools with the same versions.\n\n- Clone this repo\n\n```sh\ngit clone git@github.com:dlvhdr/gh-dash.git && cd gh-dash\n```\n\n- Install `devbox`\n\n```sh\ncurl -fsSL https://get.jetpack.io/devbox | bash\n```\n\n- Start the `devbox` shell and run the setup (will take a while on first time)\n\n```sh\ndevbox shell\n```\n\n_This will create a shell where all required tools are installed._\n\n- _(Optional)_ Set up `direnv` so `devbox shell` runs automatically\n  - [direnv](https://www.jetify.com/devbox/docs/ide_configuration/direnv/) is a tool that allows setting unique environment variables per directory in your filesystem.\n    - Install `direnv` with: `brew install direnv`\n    - Add the following line at the end of the `~/.bashrc` file: `eval \"$(direnv hook bash)\"`\n      - See [direnv's installation instructions](https://direnv.net/docs/hook.html) for other shells.\n    - Enable `direnv` by running `direnv allow`\n- _(Optional)_ Install the VSCode Extension\n  - Follow [this guide](https://www.jetify.com/devbox/docs/ide_configuration/vscode/) to set up VSCode to automatically run `devbox shell`.\n\n#### Troubleshooting\n\n- delete the `.devbox` directory at the project's root\n\n### Navigating the Codebase\n\nTo navigate our codebase with confidence, familiarize yourself with:\n\n- [Bubbletea](https://github.com/charmbracelet/bubbletea) - the TUI framework we're using\n- [The Elm architecture](https://guide.elm-lang.org/architecture/)\n- [charmbracelet/glow](https://github.com/charmbracelet/glow) - for parsing and presenting Markdown\n\n#### Code Structure\n\n- `ui/` - this is the code that's responsible for rendering the different parts of the TUI\n- `data/` - the code that fetches data from GitHub's GraphQL API\n- `config/` - code to parse the user's `config.yml` file\n- `utils/` - various utilities\n\n### Debugging\n\n- Write to the log by using Charm's `log` package\n- Tail the log by running `task logs`\n- Run `dash` in debug mode with `task debug` in another terminal window / pane\n\n```go\nimport \"charm.land/log/v2\"\n\n// more code...\n\nlog.Debug(\"some message\", \"someVariable\", someVariable)\n```\n\n### Running the Docs Locally\n\n- Run the docs site by running `task docs`\n\n* Go to `localhost:4321` to view them\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) 2025 Dolev Hadar\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<br />\n<p align=\"center\">\n  <a  class=\"underline: none;\" href=\"https://gh-dash.dev\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"./docs/public/logo.png\">\n      <img alt=\"Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'\" width=\"600\" src=\"./docs/public/logo-light.png\">\n    </picture>\n  </a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://gh-dash.dev\" target=\"_blank\">→ https://gh-dash.dev ←</a>\n</p>\n<p align=\"center\">\n  A rich terminal UI for GitHub that doesn't break your flow.\n  <br />\n  <br />\n  <a href=\"https://github.com/dlvhdr/gh-dash/releases\"><img src=\"https://img.shields.io/github/release/dlvhdr/gh-dash.svg\" alt=\"Latest Release\"></a>\n  <a href=\"https://discord.gg/SXNXp9NctV\"><img src=\"https://img.shields.io/discord/1413193703476035755?label=discord\" alt=\"Discord\"/></a>\n  <a href=\"https://github.com/sponsors/dlvhdr\"><img src=https://img.shields.io/github/sponsors/dlvhdr?logo=githubsponsors&color=EA4AAA /></a>\n  <a href=\"https://www.jetify.com/devbox/docs/contributor-quickstart/\" alt=\"Built with Devbox\"><img src=\"https://www.jetify.com/img/devbox/shield_galaxy.svg\" /></a>\n</p>\n\n<br />\n\n<img src=\"./docs/src/assets/overview.gif\" />\n\n## 🌟 Features\n\n> [!NOTE]\n> If you like quickly navigating with your keyboard, seeing the PRs and issues you need and you <strong>love the terminal</strong> - <code>DASH</code> is for you! 🫵🏽\n\n- User-defined, per-repo, PRs & issues sections\n- Overridable vim-style keyboard hotkeys\n- Custom actions to perform your specific workflow needs\n- Everything you can do on GitHub - diff, comment, checkout, push, update etc.\n- Control every setting with a YAML config file\n\n## 📃 Docs\n\n`DASH` has an extensive docs site at [gh-dash.dev/getting-started](https://gh-dash.dev/getting-started).\n\n## ❤️ Donating\n\nIf you enjoy `DASH` and want to help, consider supporting the project with a\ndonation at the [sponsors page](https://github.com/sponsors/dlvhdr).\n\n## 👥 Discord\n\nHave questions? Join our [Discord community](https://discord.gg/SXNXp9NctV)!\n\n## 🙏 Contributing\n\nSee the contribution guide at [https://www.gh-dash.dev/contributing](https://www.gh-dash.dev/contributing/).\n\n## 🛞 Under the hood\n\n`DASH` uses:\n\n- [bubbletea](https://github.com/charmbracelet/bubbletea) for the TUI\n- [lipgloss](https://github.com/charmbracelet/lipgloss) for the styling\n- [glamour](https://github.com/charmbracelet/glamour) for rendering markdown\n- [vhs](https://github.com/charmbracelet/vhs) for generating the GIF\n- [cobra](https://github.com/spf13/cobra) for the CLI\n- [gh](https://github.com/cli/cli) for the GitHub functionality\n- [delta](https://github.com/dandavison/delta) for viewing PR diffs\n\n## Author\n\nDolev Hadar [@dlvhdr](https://github.com/dlvhdr).\n"
  },
  {
    "path": "Taskfile.yaml",
    "content": "# https://taskfile.dev\n\nversion: \"3\"\nsilent: true\n\ntasks:\n  default:\n    cmds:\n      - go run . {{.CLI_ARGS}}\n    interactive: true\n    desc: Run\n\n  build:\n    - go build .\n\n  uninstall:\n    cmds:\n      - gh ext remove dash\n\n  install:\n    cmds:\n      - task: build\n      - task: uninstall\n      - echo \"🕐 Installing local build...\" && gh ext install .\n      - gh dash --version\n\n  install:prod:\n    cmds:\n      - task: uninstall\n      - echo \"🕐 Installing latest version...\" && gh ext install dlvhdr/gh-dash\n      - gh dash --version\n\n  debug:\n    cmds:\n      - printf \"~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n―――――――――――――――――――――――――――――――――――――――――――――――\\n\" > ./debug.log\n      - DEBUG=true go run . --debug {{.CLI_ARGS}}\n    interactive: true\n    desc: Run in debug mode. Run `task logs` to watch the logs.\n\n  debug:warn:\n    cmds:\n      - printf \"~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n~\\n―――――――――――――――――――――――――――――――――――――――――――――――\\n\" > ./debug.log\n      - LOG_LEVEL=warn DEBUG=true go run . --debug {{.CLI_ARGS}}\n    interactive: true\n    desc: Run in debug mode, only log warning. Run `task logs` to watch the logs.\n\n  dlv:\n    cmds:\n      - dlv debug --headless --api-version=2 --listen=127.0.0.1:43000 .\n    desc: Debug with dlv\n\n  logs:\n    cmds:\n      - rm -f ./debug.log\n      - touch ./debug.log\n      - tail -f ./debug.log\n    interactive: true\n    desc: Tail the debug logs\n\n  lint:\n    desc: Run base linters\n    cmds:\n      - golangci-lint run --path-mode=abs --config=\".golangci.yml\" --timeout=5m\n    env:\n      GOEXPERIMENT: null\n\n  lint:fix:\n    desc: Run base linters and fix issues\n    cmds:\n      - golangci-lint run --path-mode=abs --config=\".golangci.yml\" --timeout=5m --fix\n    env:\n      GOEXPERIMENT: null\n\n  test:one:\n    cmds:\n      - gotip\n    desc: Run a test\n\n  test:rerun:\n    cmds:\n      - gotip --rerun\n    desc: Rerun the last test\n\n  test:\n    cmds:\n      - prism test {{.CLI_ARGS}} ./...\n    desc: Run tests\n\n  fmt:\n    desc: Run gofumpt\n    cmds:\n      - gofumpt -w $(git ls-files '*.go')\n\n  check-nerd-font:\n    cmds:\n      - nerdfix check $(fd --extension go)\n    desc: Find broken nerdfont characters\n\n  fix-nerd-font:\n    cmds:\n      - nerdfix fix --format=json $(fd --extension go)\n    desc: Fix broken nerdfont icons\n\n  docs-prepare:\n    cmds:\n      - cd docs && pnpm i\n\n  docs:\n    cmds:\n      - cd docs && pnpm dev\n    desc: Start docs server\n\n  docs-build:\n    cmds:\n      - task: docs-prepare\n      - cd docs && pnpm build\n    desc: Run docs production build\n\n  docs-preview:\n    cmds:\n      - task: docs-build\n      - cd docs && pnpm preview\n    desc: Preview docs production build\n"
  },
  {
    "path": "cmd/root.go",
    "content": "/*\nCopyright © 2022 NAME HERE <EMAIL ADDRESS>\n*/\npackage cmd\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\tslog \"log\"\n\t\"os\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"runtime/pprof\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/log/v2\"\n\t\"github.com/charmbracelet/fang\"\n\tzone \"github.com/lrstanley/bubblezone/v2\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\tdctx \"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nvar (\n\tVersion = \"dev\"\n\tCommit  = \"\"\n\tDate    = \"\"\n\tBuiltBy = \"\"\n)\n\nvar (\n\tcfgFlag string\n\n\tlogo = lipgloss.NewStyle().Foreground(dctx.LogoColor).MarginBottom(1).SetString(constants.Logo)\n\n\trootCmd = &cobra.Command{\n\t\tUse: \"gh dash\",\n\t\tLong: lipgloss.JoinVertical(lipgloss.Left, logo.Render(),\n\t\t\t\"A rich terminal UI for GitHub that doesn't break your flow.\",\n\t\t\t\"Visit https://gh-dash.dev for the docs.\"),\n\t\tShort:   \"A rich terminal UI for GitHub that doesn't break your flow.\",\n\t\tVersion: \"\",\n\t\tExample: `\n# Running without arguments will either:\n#   - Use the global configuration file\n#   - Use a local .gh-dash.yml file if in a git repo\ngh dash\n\n# Run with a specific configuration file\ngh dash --config /path/to/configuration/file.yml\n\n# Run with debug logging to debug.log\ngh dash --debug\n\n# Print version\ngh dash -v\n\t`,\n\t\tArgs: cobra.MaximumNArgs(1),\n\t}\n)\n\nfunc Execute() {\n\tif err := fang.Execute(\n\t\tcontext.Background(),\n\t\trootCmd,\n\t\tfang.WithVersion(rootCmd.Version),\n\t\tfang.WithoutCompletions(),\n\t\tfang.WithoutManpage(),\n\t); err != nil {\n\t\tos.Exit(1)\n\t}\n}\n\nfunc setDebugLogLevel() {\n\tswitch os.Getenv(\"LOG_LEVEL\") {\n\tcase \"debug\", \"\":\n\t\tlog.SetLevel(log.DebugLevel)\n\tcase \"info\":\n\t\tlog.SetLevel(log.InfoLevel)\n\tcase \"warn\":\n\t\tlog.SetLevel(log.WarnLevel)\n\tcase \"error\":\n\t\tlog.SetLevel(log.ErrorLevel)\n\t}\n}\n\nfunc createModel(location config.Location, debug bool) (tui.Model, *os.File) {\n\tvar loggerFile *os.File\n\n\tif debug {\n\t\tvar fileErr error\n\t\tloggerFile, fileErr = os.OpenFile(\"debug.log\",\n\t\t\tos.O_RDWR|os.O_CREATE|os.O_APPEND, 0o666)\n\t\tif fileErr == nil {\n\t\t\tlog.SetOutput(loggerFile)\n\t\t\tlog.SetTimeFormat(time.Kitchen)\n\t\t\tlog.SetReportCaller(true)\n\t\t\tsetDebugLogLevel()\n\t\t\tlog.Info(\"Logging to debug.log\")\n\t\t\tif location.RepoPath != \"\" {\n\t\t\t\tlog.Info(\"Running in repo\", \"repo\", location.RepoPath)\n\t\t\t}\n\t\t} else {\n\t\t\tloggerFile, _ = tea.LogToFile(\"debug.log\", \"debug\")\n\t\t\tslog.Print(\"Failed setting up logging\", fileErr)\n\t\t}\n\t} else {\n\t\tlog.SetOutput(os.Stderr)\n\t\tlog.SetLevel(log.FatalLevel)\n\t}\n\n\treturn tui.NewModel(location), loggerFile\n}\n\nfunc buildVersion(version, commit, date, builtBy string) string {\n\tresult := version\n\tif commit != \"\" {\n\t\tresult = fmt.Sprintf(\"%s\\ncommit: %s\", result, commit)\n\t}\n\tif date != \"\" {\n\t\tresult = fmt.Sprintf(\"%s\\nbuilt at: %s\", result, date)\n\t}\n\tif builtBy != \"\" {\n\t\tresult = fmt.Sprintf(\"%s\\nbuilt by: %s\", result, builtBy)\n\t}\n\tresult = fmt.Sprintf(\"%s\\ngoos: %s\\ngoarch: %s\", result, runtime.GOOS, runtime.GOARCH)\n\tif info, ok := debug.ReadBuildInfo(); ok && info.Main.Sum != \"\" {\n\t\tresult = fmt.Sprintf(\n\t\t\t\"%s\\nmodule version: %s, checksum: %s\",\n\t\t\tresult,\n\t\t\tinfo.Main.Version,\n\t\t\tinfo.Main.Sum,\n\t\t)\n\t}\n\n\treturn result\n}\n\nfunc init() {\n\trootCmd.PersistentFlags().StringVarP(\n\t\t&cfgFlag,\n\t\t\"config\",\n\t\t\"c\",\n\t\t\"\",\n\t\t`use this configuration file\n(default lookup:\n  1. a .gh-dash.yml file if inside a git repo\n  2. $GH_DASH_CONFIG env var\n  3. $XDG_CONFIG_HOME/gh-dash/config.yml\n)`,\n\t)\n\terr := rootCmd.MarkPersistentFlagFilename(\"config\", \"yaml\", \"yml\")\n\tif err != nil {\n\t\tlog.Fatal(\"Cannot mark config flag as filename\", err)\n\t}\n\n\trootCmd.Version = buildVersion(Version, Commit, Date, BuiltBy)\n\trootCmd.SetVersionTemplate(`gh-dash {{printf \"version %s\\n\" .Version}}`)\n\n\trootCmd.Flags().Bool(\n\t\t\"debug\",\n\t\tfalse,\n\t\t\"passing this flag will allow writing debug output to debug.log\",\n\t)\n\n\trootCmd.Flags().String(\n\t\t\"cpuprofile\",\n\t\t\"\",\n\t\t\"write cpu profile to file\",\n\t)\n\n\trootCmd.Flags().BoolP(\n\t\t\"help\",\n\t\t\"h\",\n\t\tfalse,\n\t\t\"help for gh-dash\",\n\t)\n\n\trootCmd.Run = func(_ *cobra.Command, args []string) {\n\t\tvar repo string\n\t\trepos := config.IsFeatureEnabled(config.FF_REPO_VIEW)\n\t\tif repos && len(args) > 0 {\n\t\t\trepo = args[0]\n\t\t}\n\n\t\tif repo == \"\" {\n\t\t\tr, err := git.GetRepoInPwd()\n\t\t\tif err == nil && r != nil {\n\t\t\t\trepo = r.Path()\n\t\t\t}\n\t\t}\n\t\tdebug, err := rootCmd.Flags().GetBool(\"debug\")\n\t\tif err != nil {\n\t\t\tlog.Fatal(\"Cannot parse debug flag\", err)\n\t\t}\n\n\t\tzone.NewGlobal()\n\n\t\tmodel, logger := createModel(config.Location{RepoPath: repo, ConfigFlag: cfgFlag}, debug)\n\t\tif logger != nil {\n\t\t\tdefer logger.Close()\n\t\t}\n\n\t\tcpuprofile, err := rootCmd.Flags().GetString(\"cpuprofile\")\n\t\tif err != nil {\n\t\t\tlog.Fatal(\"Cannot parse cpuprofile flag\", err)\n\t\t}\n\t\tif cpuprofile != \"\" {\n\t\t\tf, err := os.Create(cpuprofile)\n\t\t\tif err != nil {\n\t\t\t\tlog.Fatal(err)\n\t\t\t}\n\t\t\t_ = pprof.StartCPUProfile(f)\n\t\t\tdefer pprof.StopCPUProfile()\n\t\t}\n\n\t\tp := tea.NewProgram(model)\n\t\tif _, err := p.Run(); err != nil {\n\t\t\tlog.Fatal(\"Failed starting the TUI\", err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/sponsors.go",
    "content": "/*\nCopyright © 2025 NAME HERE <EMAIL ADDRESS>\n*/\npackage cmd\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/log/v2\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\n// sponsorsCmd represents the sponsors command\nvar sponsorsCmd = &cobra.Command{\n\tUse:   \"sponsors\",\n\tShort: \"Show the list of current sponsors for gh-dash\",\n\tLong: `Show the list of current sponsors for gh-dash from GitHub Sponsors under https://github.com/sponsors/dlvhdr.\nIf you enjoy dash and want to help, consider supporting the project with a donation!`,\n\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\tlog.SetLevel(log.ErrorLevel)\n\t\tsponsors, err := data.FetchSponsors()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfmt.Print(\"\\n\")\n\t\tfmt.Print(\n\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Top,\n\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\tForeground(lipgloss.Color(\"1\")).\n\t\t\t\t\tBold(true).\n\t\t\t\t\tRender(\"Thank you ❤️ \"),\n\t\t\t\tlipgloss.NewStyle().Foreground(lipgloss.Color(\"255\")).Render(\n\t\t\t\t\t\"to all the current (and past!) sponsors - you rock! 🤘🏽\"),\n\t\t\t))\n\t\tfmt.Print(\"\\n\")\n\t\tfmt.Print(\"To help this project with a donation go to https://github.com/sponsors/dlvhdr\\n\")\n\t\tfmt.Print(\"\\n\")\n\t\tfor _, sponsor := range sponsors.User.Sponsors.Nodes {\n\t\t\tif sponsor.Typename == \"User\" {\n\t\t\t\tfmt.Printf(\"  • %s (%s)\\n\", lipgloss.NewStyle().Bold(true).Render(\n\t\t\t\t\tfmt.Sprintf(\"@%s\", sponsor.User.Login)), sponsor.User.Url)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"  • %s (%s)\\n\", lipgloss.NewStyle().Bold(true).Render(\n\t\t\t\t\tsponsor.Organization.Name), sponsor.Organization.Url)\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t},\n}\n\nfunc init() {\n\trootCmd.AddCommand(sponsorsCmd)\n}\n"
  },
  {
    "path": "devbox.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/jetify-com/devbox/0.16.0/.schema/devbox.schema.json\",\n  \"env\": {\n    \"GOPATH\": \"$PWD/.devbox/go\",\n    \"GOBIN\": \"$PWD/.devbox/go/bin\",\n    \"PATH\": \"$PATH:$PWD/.devbox/go/bin\"\n  },\n  \"packages\": {\n    \"git\": \"latest\",\n    \"gh\": \"latest\",\n    \"go\": \"1.23\",\n    \"golangci-lint\": \"2.10.1\",\n    \"gofumpt\": \"0.8.0\",\n    \"go-task\": \"3.44.1\",\n    \"nerdfix\": \"0.4.2\",\n    \"fd\": \"10.2.0\"\n  },\n  \"shell\": {\n    \"init_hook\": [\n      \"echo \\\"Creating devbox shell...\\\"\",\n      \"[[ $(command -v prism) != \\\"$GOBIN/prism\\\" ]] && go install go.dalton.dog/prism@latest\",\n      \"[[ $(command -v gotip) != \\\"$GOBIN/gotip\\\" ]] && go install github.com/lusingander/gotip/cmd/gotip@latest\"\n    ]\n  }\n}\n"
  },
  {
    "path": "docs/.dockerignore",
    "content": ".DS_Store\nnode_modules\ndist\n"
  },
  {
    "path": "docs/.envrc",
    "content": "#!/bin/bash\n\n# Automatically sets up your devbox environment whenever you cd into this\n# directory via our direnv integration:\n\neval \"$(devbox generate direnv --print-envrc)\"\n\n# check out https://www.jetify.com/docs/devbox/ide_configuration/direnv/\n# for more details\n"
  },
  {
    "path": "docs/.eslint.config.js",
    "content": "import eslintPluginAstro from \"eslint-plugin-astro\";\nexport default [\n  js.configs.recommended,\n  ...eslintPluginAstro.configs.recommended,\n];\n"
  },
  {
    "path": "docs/.gitignore",
    "content": "# build output\ndist/\n# generated types\n.astro/\n\n# dependencies\nnode_modules/\n\n# logs\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n\n\n# environment variables\n.env\n.env.production\n\n# macOS-specific files\n.DS_Store\n"
  },
  {
    "path": "docs/.prettierrc.mjs",
    "content": "// .prettierrc.mjs\n/** @type {import(\"prettier\").Config} */\nexport default {\n  plugins: [\"prettier-plugin-astro\", \"prettier-plugin-tailwindcss\"],\n  overrides: [\n    {\n      files: \"*.astro\",\n      options: {\n        parser: \"astro\",\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": "docs/Dockerfile",
    "content": "FROM node:20-slim AS base\nENV PNPM_HOME=\"/pnpm\"\nENV PATH=\"$PNPM_HOME:$PATH\"\nRUN corepack enable\n\nCOPY . /app\nWORKDIR /app\n\nFROM base AS prod-deps\nRUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile\n\nFROM base AS build\nRUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile\nRUN --mount=type=secret,id=gh_token,env=GH_TOKEN pnpm run build\n\nFROM base\nCOPY --from=prod-deps /app/node_modules /app/node_modules\nCOPY --from=build /app/dist /app/dist\n\nENV HOST=0.0.0.0\nENV PORT=4321\nEXPOSE 4321\nCMD node ./dist/server/entry.mjs\n"
  },
  {
    "path": "docs/README.mdx",
    "content": "# Docs Site\n\n[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)\n\nLive at [https://gh-dash.dev](https://gh-dash.dev).\n\n## 🚀 Project Structure\n\nIn this project you'll see the following folders and files:\n\n```\n.\n├── public/\n├── src/\n│   ├── assets/\n│   ├── content/\n│   │   └── docs/\n│   └── content.config.ts\n├── astro.config.mjs\n├── package.json\n└── tsconfig.json\n```\n\nStarlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.\n\nImages can be added to `src/assets/` and embedded in Markdown with a relative link.\n\nStatic assets, like favicons, can be placed in the `public/` directory.\n\n## 🧞 Commands\n\nAll commands are run from the root of the project, from a terminal:\n\n| Command                | Action                                           |\n| :--------------------- | :----------------------------------------------- |\n| `pnpm install`         | Installs dependencies                            |\n| `pnpm dev`             | Starts local dev server at `localhost:4321`      |\n| `pnpm build`           | Build your production site to `./dist/`          |\n| `pnpm preview`         | Preview your build locally, before deploying     |\n| `pnpm astro ...`       | Run CLI commands like `astro add`, `astro check` |\n| `pnpm astro -- --help` | Get help using the Astro CLI                     |\n"
  },
  {
    "path": "docs/astro.config.mjs",
    "content": "// @ts-check\nimport { defineConfig } from \"astro/config\";\nimport starlight from \"@astrojs/starlight\";\nimport tailwindcss from \"@tailwindcss/vite\";\nimport astroBrokenLinksChecker from \"astro-broken-links-checker\";\n\nimport node from \"@astrojs/node\";\n\nconst ogUrl = new URL(\"og.png\", \"https://gh-dash.dev/\").href;\nconst ogImageAlt = \"DASH Through Your GitHub\";\n\n// https://astro.build/config\nexport default defineConfig({\n  site: \"https://gh-dash.dev\",\n  integrations: [\n    astroBrokenLinksChecker({\n      logFilePath: \"broken-links.log\",\n      checkExternalLinks: false,\n    }),\n    starlight({\n      title: \"DASH\",\n      favicon: \"/favicon.png\",\n      customCss: [\"./src/styles/custom.css\", \"./src/fonts/font-face.css\"],\n      head: [\n        {\n          tag: \"meta\",\n          attrs: { property: \"og:image\", content: ogUrl },\n        },\n        {\n          tag: \"meta\",\n          attrs: { property: \"og:image:alt\", content: ogImageAlt },\n        },\n        {\n          tag: \"meta\",\n          attrs: {\n            name: \"description\",\n            content:\n              \"DASH - a rich terminal UI for GitHub that doesn't break your flow\",\n          },\n        },\n      ],\n      components: {\n        Header: \"./src/components/Header.astro\",\n      },\n      social: [\n        {\n          icon: \"github\",\n          label: \"GitHub\",\n          href: \"https://github.com/dlvhdr/gh-dash\",\n        },\n      ],\n      sidebar: [\n        {\n          label: \"Getting Started\",\n          items: [\n            \"getting-started\",\n            \"getting-started/usage\",\n            \"getting-started/updating\",\n          ],\n        },\n        {\n          label: \"Keybindings\",\n          collapsed: true,\n          autogenerate: { directory: \"getting-started/keybindings\" },\n        },\n        {\n          label: \"Configuration\",\n          collapsed: true,\n          items: [\n            \"configuration\",\n            \"configuration/schema\",\n            \"configuration/defaults\",\n            \"configuration/searching\",\n            \"configuration/pr-section\",\n            \"configuration/issue-section\",\n            \"configuration/notification-section\",\n            \"configuration/repo-paths\",\n            \"configuration/keybindings\",\n            \"configuration/theme\",\n            \"configuration/reusing\",\n            \"configuration/examples\",\n            {\n              label: \"Layout\",\n              items: [\n                \"configuration/layout/options\",\n                \"configuration/layout/pr\",\n                \"configuration/layout/issue\",\n              ],\n            },\n          ],\n        },\n        {\n          label: \"Companion Apps\",\n          items: [\n            {\n              label: \"ENHANCE\",\n              collapsed: true,\n              items: [\n                \"companions/enhance/getting-started\",\n                \"companions/enhance/usage\",\n                \"companions/enhance/keybindings\",\n                \"companions/enhance/dash-integration\",\n                \"companions/enhance/theme\",\n              ],\n            },\n          ],\n        },\n        {\n          label: \"Insiders 🌟\",\n          items: [\"insiders\"],\n        },\n        { slug: \"contributing\" },\n        { slug: \"donating\" },\n      ],\n    }),\n  ],\n\n  vite: {\n    plugins: [tailwindcss()],\n  },\n  adapter: node({\n    mode: \"standalone\",\n  }),\n});\n"
  },
  {
    "path": "docs/devbox.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/jetify-com/devbox/0.16.0/.schema/devbox.schema.json\",\n  \"env\": {\n    \"DEVBOX_COREPACK_ENABLED\": \"true\"\n  },\n  \"packages\": {\n    \"nodejs\": \"22.14.0\"\n  },\n  \"shell\": {\n    \"init_hook\": [\"echo \\\"Creating devbox shell for docs site...\\\"\"]\n  }\n}\n"
  },
  {
    "path": "docs/package.json",
    "content": "{\n  \"name\": \"docs\",\n  \"type\": \"module\",\n  \"version\": \"0.0.1\",\n  \"scripts\": {\n    \"dev\": \"astro dev\",\n    \"start\": \"astro dev\",\n    \"build\": \"astro build\",\n    \"preview\": \"astro preview\",\n    \"astro\": \"astro\"\n  },\n  \"dependencies\": {\n    \"@astrojs/node\": \"^9.4.3\",\n    \"@astrojs/starlight\": \"^0.35.2\",\n    \"@astrojs/starlight-tailwind\": \"^4.0.1\",\n    \"@tailwindcss/vite\": \"^4.1.12\",\n    \"astro\": \"^5.6.1\",\n    \"astro-broken-links-checker\": \"github:imazen/astro-broken-link-checker\",\n    \"sharp\": \"^0.34.2\",\n    \"tailwindcss\": \"^4.1.12\"\n  },\n  \"devDependencies\": {\n    \"@typescript-eslint/parser\": \"^8.41.0\",\n    \"eslint\": \"^9.34.0\",\n    \"eslint-plugin-astro\": \"^1.3.1\",\n    \"eslint-plugin-jsx-a11y\": \"^6.10.2\",\n    \"prettier\": \"^3.6.2\",\n    \"prettier-plugin-astro\": \"^0.14.1\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.14\"\n  },\n  \"packageManager\": \"pnpm@10.14.0\"\n}\n"
  },
  {
    "path": "docs/src/assets/custom-commands.tape",
    "content": "Output custom-commands.webm\nOutput custom-commands.mp4\nOutput custom-commands.gif\n\nSet Theme TokyoNight\nSet Padding 0\nSet FontSize 24\nSet FontFamily \"CommitMono Nerd Font\"\nSet Width 1400\nSet Height 600\n\nHide\nType \"gh dash --config custom-commands.yml\"\n\nEnter\nSleep 8s\nShow\n\nSleep 1000ms\n\nType \"g\"\nSleep 1000ms\nType@200ms \"jjjjjjjjjj\"\nSleep 1000ms\nType \"q\"\n\n"
  },
  {
    "path": "docs/src/assets/custom-commands.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:dlvhdr\n  - title: Needs My Review\n    filters: review-requested:@me owner:dlvhdr\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n\ndefaults:\n  preview:\n    open: false\n    width: 40\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: >\n        cd {{.RepoPath}} && lazygit\n    - key: C\n      name: code review\n      command: >\n        tmux new-window -c {{.RepoPath}} '\n        nvim -c \":silent Octo pr edit {{.PrNumber}}\"\n        '\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#b0b3bf\"\n      warning: \"#F23D5C\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1b1b33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/assets/demo.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:charmbracelet\n  - title: Review Requested\n    filters: review-requested:@me owner:charmbraclet\n  - title: My Team\n    filters: is:open owner:neovim author:gpanders author:tjdevries\n  - title: Open Source\n    filters: is:open repo:ghostty-org/ghostty repo:neovim/neovim\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n  - title: Bubbletea\n    filters: repo:charmbracelet/bubbletea\n\ndefaults:\n  preview:\n    open: true\n    width: 40\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  prs: []\nrepoPaths: {}\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#b0b3bf\"\n      warning: \"#F23D5C\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1b1b33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/assets/overview.tape",
    "content": "Output overview.webm\nOutput overview.mp4\nOutput overview.gif\n\nSet PlaybackSpeed 1.3\nSet Theme TokyoNight\nSet Padding 0\nSet FontSize 24\nSet FontFamily \"CommitMono Nerd Font\"\nSet Width 1600\nSet Height 800\n\nHide\nType \"gh dash --config demo.yml\"\n\nEnter\nSleep 8s\nShow\n\nSet TypingSpeed 600ms\nSleep 500ms\n\nType \"j\"\nType \"j\"\nType \"]\"\nType \"]\"\n\nType \"?\"\nSleep 1s\nType \"?\"\n\nHide\nType \"d\"\nSleep 1s\nType \"jjjjjjjjj\"\nShow\nCtrl+D\nSleep 500ms\nCtrl+D\nSleep 500ms\nCtrl+D\nSleep 300ms\nType j\nSleep 200ms\nType j\nSleep 200ms\nType \"q\"\nSleep 500ms\n\nType \"c\"\n\nType@60ms \"Looks good to me! 🚀\"\nSleep 500ms\n\nHide\nCtrl+c\nType y\nSleep 500ms\nShow\n\nHide\nSleep 2s\nShow\nSleep 500ms\n\nType \"l\"\nType \"l\"\nType \"l\"\nSleep 500ms\n\nType \"s\"\nHide\nSleep 7s\nType \"j\"\nSleep 100ms\nShow\nSleep 1500ms\n"
  },
  {
    "path": "docs/src/assets/sections.tape",
    "content": "Output sections.webm\nOutput sections.mp4\nOutput sections.gif\n\nSet Theme TokyoNight\nSet Padding 0\nSet FontSize 24\nSet FontFamily \"CommitMono Nerd Font\"\nSet Width 1200\nSet Height 600\n\nHide\nType \"gh dash --config sections.yml\"\n\nEnter\nSleep 8s\nShow\n\nSleep 1500ms\n\nType \"l\"\nSleep 1000ms\n\nHide\nType \"s\"\nSleep 8s\nType \"l\"\nType \"h\"\nShow\n\nSleep 1500ms\n\nType \"l\"\nSleep 1000ms\n"
  },
  {
    "path": "docs/src/assets/sections.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:dlvhdr\n  - title: Needs My Review\n    filters: review-requested:@me owner:dlvhdr\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n\ndefaults:\n  preview:\n    open: false\n    width: 40\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  prs: []\nrepoPaths: {}\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#b0b3bf\"\n      warning: \"#F23D5C\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1b1b33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/assets/theme-catpuccin.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:dlvhdr\n  - title: Needs My Review\n    filters: review-requested:@me owner:dlvhdr\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n\ndefaults:\n  preview:\n    open: true\n    width: 50\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  prs: []\nrepoPaths: {}\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#89b4fa\"\n      secondary: \"#b4befe\"\n      inverted: \"#181825\"\n      faint: \"#7f849c\"\n      warning: \"#f9e2af\"\n      success: \"#a6e3a1\"\n    background:\n      selected: \"#313244\"\n    border:\n      primary: \"#9399b2\"\n      secondary: \"#585b70\"\n      faint: \"#313244\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/assets/theme-gruvbox.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:dlvhdr\n  - title: Needs My Review\n    filters: review-requested:@me owner:dlvhdr\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n\ndefaults:\n  preview:\n    open: true\n    width: 50\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  prs: []\nrepoPaths: {}\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#fe8019\"\n      secondary: \"#d65d0e\"\n      inverted: \"#3c3836\"\n      faint: \"#d5c4a1\"\n      warning: \"#fabd2f\"\n      success: \"#98971a\"\n    background:\n      selected: \"#282828\"\n    border:\n      primary: \"#665c54\"\n      secondary: \"#3c3836\"\n      faint: \"#1d2021\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/assets/theme-tokyonight.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me owner:dlvhdr\n  - title: Needs My Review\n    filters: review-requested:@me owner:dlvhdr\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n\ndefaults:\n  preview:\n    open: true\n    width: 50\n  prsLimit: 20\n  issuesLimit: 20\n  view: repo\nkeybindings:\n  prs: []\nrepoPaths: {}\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#b0b3bf\"\n      warning: \"#F23D5C\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1b1b33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\nsmartFilteringAtLaunch: false\n"
  },
  {
    "path": "docs/src/components/Box.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\n\nconst { header, icon } = Astro.props;\n---\n\n<div class=\"relative flex w-full max-w-full flex-row gap-6 lg:w-auto\">\n  <div\n    class=\"w-full border border-[var(--sl-color-gray-5)] bg-[var(--sl-color-black)] p-2 py-6 lg:w-lg lg:p-6\"\n  >\n    <div\n      class=\"is-dark:bg-[var(--sl-color-gray-5)] absolute -top-4 right-2 left-2 z-10 max-w-full rounded-2xl bg-[var(--sl-color-gray-6)] px-2 lg:right-auto lg:px-3\"\n    >\n      <h3\n        class=\"flex items-center gap-2 !text-base text-[var(--sl-color-accent)]\"\n      >\n        <Icon class=\"inline\" name={icon} size=\"20px\" />\n        {header}\n      </h3>\n    </div>\n    <slot />\n  </div>\n</div>\n"
  },
  {
    "path": "docs/src/components/DashHeroLogo.astro",
    "content": "---\nimport Logo from \"./Logo.astro\";\n---\n\n<style>\n  @keyframes dash-in {\n    from {\n      opacity: 0;\n      filter: blur(1rem);\n      translate: -50vw 0;\n    }\n\n    to {\n      opacity: 1;\n      filter: blur(0);\n      translate: 0 0;\n    }\n  }\n\n  #title-logo {\n    animation: dash-in 400ms ease-out;\n    h1 {\n      line-height: 1.3;\n      background-image: var(--hdr-gradient);\n      background-size: 100%;\n      background-clip: text;\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n      -moz-background-clip: text;\n      -moz-text-fill-color: transparent;\n      background-repeat: repeat;\n    }\n    transform: skew(-20deg);\n\n    & > [aria-label=\"DASH ASCII Logo\"] {\n      transform: skew(0);\n    }\n  }\n</style>\n\n<div\n  id=\"title-logo\"\n  class=\"relative flex flex-col items-center justify-center gap-[1ch] text-white lg:flex-row lg:items-baseline-last lg:gap-[3ch]\"\n>\n  <div class=\"relative -left-2 flex flex-row items-center gap-8 md:left-0\">\n    {/* prettier-ignore */}\n    <pre\n      class=\"!bg-transparent p-0 text-[var(--sl-color-gray-4)]\">  ·-\n·---\n  --\n</pre>\n    <Logo className=\"inline text-3xl md:left-0 lg:text-4xl\" />\n  </div>\n  <h1\n    id=\"_top\"\n    aria-label=\"DASH Through Your GitHub\"\n    class=\"mt-0 w-full translate-x-8 text-center -indent-4 text-2xl leading-normal lg:w-auto lg:translate-x-0 lg:text-left lg:indent-0 lg:text-4xl\"\n  >\n    Through <br />\n    Your GitHub\n  </h1>\n</div>\n"
  },
  {
    "path": "docs/src/components/DecorationBottom.astro",
    "content": "---\n\n---\n\n<pre\n  class=\"!bg-transparent leading-normal text-[var(--sl-color-gray-4)]\">\n ────────────────·.   .·──────────────── \n(                  \\_/                  )\n ‾                                     ‾ \n</pre>\n"
  },
  {
    "path": "docs/src/components/DecorationSeparator.astro",
    "content": "---\n\n---\n\n<pre\n  class=\"!bg-transparent leading-normal text-[var(--sl-color-gray-4)]\">\n  {\"<~-----------------◇-----------------~>\"}\n</pre>\n"
  },
  {
    "path": "docs/src/components/DecorationTop.astro",
    "content": "---\n\n---\n\n<pre\n  class=\"!bg-transparent leading-normal text-[var(--sl-color-gray-4)]\">\n _                  _                  _ \n(                  / \\                  )\n ────────────────·´   `·──────────────── \n</pre>\n"
  },
  {
    "path": "docs/src/components/DiffnavCard.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\nimport DiffnavMiniLogo from \"./DiffnavMiniLogo.astro\";\n---\n\n<a\n  href=\"https://github.com/dlvhdr/diffnav\"\n  target=\"_blank\"\n  class=\"no-underline\"\n>\n  <div\n    class=\"flex w-full flex-row items-center gap-8 border border-[var(--sl-color-gray-4)] p-4 no-underline hover:bg-[var(--sl-color-gray-6)]\"\n  >\n    <div class=\"flex flex-col gap-4\">\n      <DiffnavMiniLogo />\n      <Icon\n        name=\"right-arrow\"\n        size=\"24px\"\n        class=\"mt-0 animate-pulse self-center rounded-full bg-[var(--sl-color-gray-4)] md:hidden\"\n      />\n    </div>\n    <Icon\n      name=\"right-arrow\"\n      size=\"24px\"\n      class=\"relative -left-4 mt-0 hidden min-w-max animate-pulse justify-self-end rounded-full bg-[var(--sl-color-gray-4)] md:block\"\n    />\n  </div>\n</a>\n"
  },
  {
    "path": "docs/src/components/DiffnavMiniLogo.astro",
    "content": "---\nconst { class: className } = Astro.props;\n---\n\n<style>\n  [aria-label=\"DIFFNAV ASCII Logo\"] {\n    position: relative;\n    background-image: var(--hdr-green-red-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n    border: none;\n    padding: 0;\n  }\n</style>\n\n<div class=\"inline-flex flex-col\">\n  <pre\n    aria-label=\"DIFFNAV ASCII Logo\"\n    class:list={[\n      \"w-fit text-xl leading-none lg:text-lg\",\n      className,\n    ]}>\n▜▔▚ ▌▐▔▔▐▔▔▐▚ ▌▐▔▌▐ ▞\n▟▁▞ ▌▐▔ ▐▔ ▐ ▚▌▐▔▌▐▞ </pre>\n  <p class=\"mt-4 ml-1 p-0 text-sm text-[var(--sl-color-white)]\">\n    A git diff pager based on delta but with a file tree, à la GitHub.\n  </p>\n</div>\n"
  },
  {
    "path": "docs/src/components/Discord.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\n\nconst { class: className } = Astro.props;\n---\n\n<div class:list={[\"text-center text-pretty lg:w-lg\", className]}>\n  <h2>\n    <Icon class=\"relative -top-0.5 inline align-middle\" name=\"discord\" /> Join Our\n    Discord Community\n  </h2>\n  <p>\n    If you want to keep up with the TUIs I'm developing or just want to nerd out\n    about the terminal - <br /><a\n      href=\"https://discord.gg/SXNXp9NctV\"\n      target=\"_blank\">come join us!</a\n    >\n  </p>\n</div>\n"
  },
  {
    "path": "docs/src/components/EnhanceCard.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\nimport EnhanceMiniLogo from \"./EnhanceMiniLogo.astro\";\n---\n\n<a href=\"/enhance\" class=\"no-underline\">\n  <div\n    class=\"flex w-full flex-row items-center gap-8 border border-[var(--sl-color-gray-4)] p-4 no-underline hover:bg-[var(--sl-color-gray-6)]\"\n  >\n    <div class=\"flex flex-col gap-4\">\n      <EnhanceMiniLogo />\n      <Icon\n        name=\"right-arrow\"\n        size=\"24px\"\n        class=\"mt-0 animate-pulse self-center rounded-full bg-[var(--sl-color-gray-4)] md:hidden\"\n      />\n    </div>\n    <Icon\n      name=\"right-arrow\"\n      size=\"24px\"\n      class=\"relative -left-4 mt-0 hidden min-w-max animate-pulse justify-self-end rounded-full bg-[var(--sl-color-gray-4)] md:block\"\n    />\n  </div>\n</a>\n"
  },
  {
    "path": "docs/src/components/EnhanceLogo.astro",
    "content": "---\nconst { className } = Astro.props;\n---\n\n<style>\n  [aria-label=\"ENHANCE ASCII Logo\"] {\n    position: relative;\n    background-image: var(--hdr-green-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n  }\n\n  [aria-label=\"Magnifying Glass\"] {\n    background-image: var(--radial-silver-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n  }\n</style>\n\n<div class={`relative ${className}`}>\n  <pre\n    aria-label=\"Magnifying Glass\"\n    class=\"absolute -top-[80%] -z-1 text-lg leading-[1.1] -tracking-[1px] opacity-45 md:-left-1/8\">\n      _.-·--._      \n    .´        `.    \n   ╱            \\   \n  ¡             ▕   \n  |        ╱╱   ;|  \n  :        ╱╱   ;;  \n  :╲          .´/   \n   \\`-.__..·-´.'    \n    `╱╱╱___.-´      \n    ╱╱╱             \n   ╱╱╱              \n  ╱╱╱               \n (_╱                \n</pre>\n  <pre\n    aria-label=\"ENHANCE ASCII Logo\"\n    class=\"text-2xl leading-none lg:text-3xl\">\n▐▔▔▐▚ ▌▐ ▌▐▔▌▐▚ ▌▐▔▔▐▔▔\n▐▛▁▐ ▚▌▐▔▌▐▔▌▐ ▚▌▐▁▁▐▛▁\n</pre>\n</div>\n"
  },
  {
    "path": "docs/src/components/EnhanceMiniLogo.astro",
    "content": "---\nconst { class: className } = Astro.props;\n---\n\n<style>\n  [aria-label=\"ENHANCE ASCII Logo\"] {\n    position: relative;\n    background-image: var(--hdr-green-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n    border: none;\n    padding: 0;\n  }\n</style>\n\n<div class=\"inline-flex flex-col\">\n  <pre\n    aria-label=\"ENHANCE ASCII Logo\"\n    class:list={[\n      \"text-xl leading-none lg:text-lg\",\n      className,\n    ]}>\n▐▔▔▐▚ ▌▐ ▌▐▔▌▐▚ ▌▐▔▔▐▔▔\n▐▛▁▐ ▚▌▐▔▌▐▔▌▐ ▚▌▐▁▁▐▛▁</pre>\n  <p class=\"mt-4 ml-1 p-0 text-sm text-[var(--sl-color-white)]\">\n    A Blazingly Fast Terminal UI for GitHub Actions\n  </p>\n</div>\n"
  },
  {
    "path": "docs/src/components/EnhanceOneLineLogo.astro",
    "content": "---\nconst { class: className } = Astro.props;\n---\n\n<style>\n  [aria-label=\"ENHANCE ASCII Logo\"] {\n    position: relative;\n    background-image: var(--hdr-green-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n    border: none;\n    padding: 0;\n    margin: 0;\n  }\n</style>\n\n<div>\n  <pre\n    aria-label=\"ENHANCE ASCII Logo\"\n    class:list={[\n      \"text-xs leading-none\",\n      className,\n    ]}>\n▐▔▔▐▚ ▌▐ ▌▐▔▌▐▚ ▌▐▔▔▐▔▔\n▐▛▁▐ ▚▌▐▔▌▐▔▌▐ ▚▌▐▁▁▐▛▁</pre>\n</div>\n"
  },
  {
    "path": "docs/src/components/FadeImages.astro",
    "content": "---\nimport \"../styles/fade-images.css\";\n---\n\n<div class=\"fadein h-full w-full\">\n  <slot />\n</div>\n"
  },
  {
    "path": "docs/src/components/FeatureCard.astro",
    "content": "---\nimport FeatureSponsorshipGoal from \"./FeatureSponsorshipGoal.astro\";\n\nconst PROJECTS = {\n  dash: {\n    url: \"/\",\n    colorClass: \"text-[var(--sl-color-accent-high)]\",\n  },\n  enhance: {\n    url: \"/enhance\",\n    colorClass: \"text-[#38E796]\",\n  },\n} as const;\n\ninterface Props {\n  project: keyof typeof PROJECTS;\n  feature: string;\n  description: string;\n  variant?: \"mini\" | \"full\";\n  future?: boolean;\n}\n\nconst {\n  feature,\n  future = false,\n  description,\n  project,\n  variant = \"full\",\n} = Astro.props;\n---\n\n<div class=\"w-full\">\n  <form action={`${PROJECTS[project].url}`}>\n    <button\n      type=\"submit\"\n      class=\"w-full border-none bg-transparent text-left hover:no-underline!\"\n    >\n      <div\n        class=\"flex w-full flex-row items-center gap-8 border border-[var(--sl-color-gray-4)] p-4 no-underline hover:bg-[var(--sl-color-gray-6)]\"\n      >\n        <div class=\"p-2\">\n          {\n            variant === \"mini\" ? null : (\n              <div\n                class={`${PROJECTS[project].colorClass} inline w-auto rounded bg-[var(--sl-color-gray-5)] p-1 text-sm tracking-wide`}\n              >\n                <span class=\"uppercase\">{project}</span> FEATURE\n              </div>\n            )\n          }\n          <FeatureSponsorshipGoal\n            server:defer\n            variant=\"mini\"\n            feature={feature}\n            description={description}\n            future={future}\n          >\n            <div\n              slot=\"fallback\"\n              class=\"h-9 w-full animate-pulse rounded bg-[var(--sl-color-gray-6)]\"\n            >\n            </div>\n          </FeatureSponsorshipGoal>\n        </div>\n      </div>\n    </button>\n  </form>\n</div>\n"
  },
  {
    "path": "docs/src/components/FeatureSponsorshipGoal.astro",
    "content": "---\nimport { getSponsorshipGoal } from \"../data/sponsorshipGoal\";\nimport { Icon } from \"@astrojs/starlight/components\";\n\nconst { variant, future = false, feature, description } = Astro.props;\n\nconst response = await getSponsorshipGoal();\nconst current = response.data.user.monthlyEstimatedSponsorsIncomeInCents / 100;\nconst GOAL = 250; // USD\n---\n\n<div class={`mt-0 max-w-full md:max-w-[80ch]`}>\n  <label\n    for=\"sponsorship-goal\"\n    class=\"mt-0 mb-0 text-sm text-pretty text-[var(--sl-color-gray-3)]\"\n  >\n    {\n      variant !== \"mini\" ? (\n        <div class=\"hidden md:block\">\n          <Icon\n            name=\"information\"\n            size=\"16px\"\n            class=\"mr-1/2 relative -bottom-[2.5px] inline\"\n          />\n          Get early access through the\n          <a\n            class=\"text-[var(--sl-color-gray-2)] no-underline\"\n            href=\"/insiders\"\n          >\n            Insiders Program\n          </a>\n        </div>\n      ) : null\n    }\n  </label>\n  <div class=\"flex flex-col gap-2\">\n    <h3 class=\"mt-0 mb-0 text-xl font-bold\">{feature}</h3>\n    <p class=\"mt-0 text-base\">{description}</p>\n  </div>\n\n  {\n    future ? null : (\n      <div class=\"relative mt-4 text-center\">\n        <progress\n          id=\"sponsorship-goal\"\n          value={current}\n          max={GOAL}\n          class=\"h-4 w-full appearance-none [&::-moz-progress-bar]:bg-pink-200 dark:[&::-moz-progress-bar]:bg-pink-300 [&::-webkit-progress-bar]:rounded [&::-webkit-progress-bar]:bg-[var(--sl-color-gray-5)] [&::-webkit-progress-value]:rounded [&::-webkit-progress-value]:bg-pink-400 dark:[&::-webkit-progress-value]:bg-pink-800\"\n        >\n          {Intl.NumberFormat(\"en-US\", {\n            style: \"currency\",\n            currency: \"USD\",\n          }).format(current)}{\" \"}\n          /{\" \"}\n          {Intl.NumberFormat(\"en-US\", {\n            style: \"currency\",\n            currency: \"USD\",\n          }).format(GOAL)}\n        </progress>\n        <p class=\"absolute -top-[0.6rem] right-0 left-0 text-xs text-[var(--sl-color-gray-2)] mix-blend-hard-light dark:mix-blend-lighten\">\n          {Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 2 }).format(\n            (current / GOAL) * 100,\n          )}\n          % towards ${GOAL} per month goal\n        </p>\n        <p\n          class={`mt-0 text-xs text-pretty text-[var(--sl-color-gray-3)] md:text-sm`}\n        >\n          Hitting the goal will open source it for everyone\n        </p>\n      </div>\n    )\n  }\n</div>\n"
  },
  {
    "path": "docs/src/components/Footer.astro",
    "content": "---\nimport DecorationTop from \"./DecorationTop.astro\";\nimport DecorationBottom from \"./DecorationBottom.astro\";\n\nconst { class: className, isCommunity = true } = Astro.props;\n---\n\n<div\n  class:list={[\n    \"flex flex-col items-center p-8 text-center !text-sm\",\n    className,\n  ]}\n>\n  <DecorationTop />\n  <p class=\"mb-2\">\n    Created and maintained by <a href=\"https://github.com/dlvhdr\">@dlvhdr</a>{\n      isCommunity ? (\n        <>\n          {\" \"}\n          and the{\" \"}\n          <a href=\"https://github.com/dlvhdr/gh-dash/graphs/contributors\">\n            community\n          </a>\n        </>\n      ) : null\n    }\n  </p>\n  <div class=\"flex gap-3\">\n    <a\n      class={\"flex items-center gap-2 text-[var(--sl-color-accent-low)] no-underline hover:underline rounded-lg border border-[var(--sl-color-gray-5)] bg-[var(--sl-color-black)] px-2 py-1 text-xs\"}\n      href=\"https://charm.sh\"\n      target=\"_blank\"\n    >\n      Built with: <span class=\"underline\">Charm</span>\n    </a>\n    <a\n      class={\"flex items-center gap-2 text-[var(--sl-color-accent-low)] no-underline hover:underline rounded-lg border border-[var(--sl-color-gray-5)] bg-[var(--sl-color-black)] px-2 py-1 text-xs\"}\n      href=\"https://github.com/tokyo-night/tokyo-night-vscode-theme\"\n      target=\"_blank\"\n    >\n      Theme: <span class=\"underline\">Tokyo Night</span>\n    </a>\n  </div>\n  <DecorationBottom />\n</div>\n"
  },
  {
    "path": "docs/src/components/Header.astro",
    "content": "---\nimport Search from \"@astrojs/starlight/components/Search.astro\";\nimport Logo from \"./Logo.astro\";\nimport { Icon } from \"@astrojs/starlight/components\";\nimport PillLink from \"./PillLink.astro\";\nimport ThemeSelect from \"./ThemeSelect.astro\";\nimport StargazersCount from \"./StargazersCount.astro\";\nimport StargazersFallback from \"./StargazersFallback.astro\";\n\nconst isDashHomepage = Astro.locals.starlightRoute.id === \"\";\nconst isEnhanceHomepage = Astro.locals.starlightRoute.id === \"enhance\";\n---\n\n<div class=\"bg-[var(--sl-color-bg)] px-2 py-2 lg:px-6\">\n  <div\n    class=\"flex max-w-[100vw] flex-row items-center gap-3 rounded border border-[var(--sl-color-gray-5)] py-2 pr-2 pl-4 lg:gap-3 lg:px-6\"\n  >\n    <div class=\"flex grow items-end\">\n      <a href=\"/\" class=\"no-underline\">\n        <Logo />\n      </a>\n      {\n        isEnhanceHomepage ? (\n          <p class=\"ml-2 hidden h-min text-sm leading-[18px] text-orange-400 uppercase md:block dark:text-orange-600\">\n            Companion\n          </p>\n        ) : null\n      }\n    </div>\n    <form action=\"/insiders/\" class=\"flex items-center\">\n      <button\n        class=\"dark:bg-orange-250 relative h-8 rounded border border-orange-200 bg-orange-100 px-1 text-sm text-orange-600 hover:bg-orange-200 hover:text-orange-700 hover:!no-underline md:h-[38px] md:px-3 lg:text-base dark:border-orange-900 dark:bg-orange-950 dark:text-orange-400 dark:hover:bg-orange-900 dark:hover:text-orange-200\"\n      >\n        <span class=\"hidden md:block\">🌟 Join Insiders</span>\n        <span class=\"flex flex-row items-center gap-1 md:hidden\">\n          <Icon name=\"heart\" size=\"16px\" color=\"var(--color-red-500)\" />\n          Donate\n        </span>\n      </button>\n    </form>\n    {\n      isDashHomepage ? (\n        <PillLink href=\"/getting-started\" class=\"hidden lg:block\">\n          <>\n            <Icon name=\"document\" size=\"20px\" />\n            <span class=\"hidden lg:block\"> Docs</span>\n          </>\n        </PillLink>\n      ) : null\n    }\n    <div class=\"hidden md:block\">\n      <StargazersCount server:defer>\n        <StargazersFallback slot=\"fallback\" />\n      </StargazersCount>\n    </div>\n    <PillLink class=\"hidden lg:block\" href=\"/donating\">\n      <Icon name=\"heart\" size=\"20px\" color=\"var(--color-red-500)\" /><span\n        class=\"hidden lg:block\"\n      >\n        Donate</span\n      >\n    </PillLink>\n    <PillLink\n      class=\"hidden lg:block\"\n      href=\"https://discord.gg/SXNXp9NctV\"\n      target=\"_blank\"\n    >\n      <Icon name=\"discord\" size=\"20px\" />\n    </PillLink>\n    <Search />\n    <div class=\"hidden md:block\">\n      <ThemeSelect />\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "docs/src/components/Hero.astro",
    "content": "---\nimport Default from \"@astrojs/starlight/components/PageTitle.astro\";\nimport Logo from \"./Logo.astro\";\nimport EnhanceLogo from \"./EnhanceLogo.astro\";\nimport ReleaseVersionButton from \"./ReleaseVersionButton.astro\";\nimport Terminal from \"./Terminal.astro\";\nimport { Icon } from \"@astrojs/starlight/components\";\n\nconst { tagline, githubUrl, videoUrl, getStartedUrl } = Astro.props;\n---\n\n<div class=\"flex flex-col-reverse items-center gap-16 2xl:flex-row 2xl:gap-6\">\n  <Terminal>\n    <video autoplay loop muted playsinline class=\"w-[95vw] lg:w-[800px]\">\n      <source src={`/${videoUrl}.webm`} type=\"video/webm\" />\n      <source src={`/${videoUrl}.mp4`} type=\"video/mp4\" />\n    </video>\n  </Terminal>\n  <div class=\"flex w-full shrink-[5] flex-col items-center\">\n    <slot />\n    <div class=\"flex flex-row items-center gap-1\">\n      <form action={`${githubUrl}/releases`}>\n        <ReleaseVersionButton server:defer>\n          <button\n            slot=\"fallback\"\n            class=\"m-0 h-7 w-16 animate-pulse rounded-lg bg-[var(--sl-color-black)] px-2 py-2 text-sm text-[var(--sl-color-gray-3)]\"\n          ></button>\n        </ReleaseVersionButton>\n      </form>\n      <button\n        class=\"m-0 rounded-lg bg-[var(--sl-color-black)] px-2 py-1 text-sm text-[var(--sl-color-gray-3)]\"\n      >\n        Build: passing\n      </button>\n    </div>\n    <h2\n      class=\"text-center !text-xl font-normal text-pretty lg:w-[30ch] lg:!text-2xl\"\n    >\n      {tagline}\n    </h2>\n    <div\n      id=\"main-buttons\"\n      class=\"mt-8 flex flex-col items-center gap-4 md:flex-row\"\n    >\n      <form action={getStartedUrl}>\n        <button\n          class=\"flex items-center justify-center gap-1 bg-[var(--sl-color-accent-high)] font-bold text-[var(--sl-color-black)]\"\n          >Get started <Icon\n            class=\"inline\"\n            name=\"right-arrow\"\n            size=\"20px\"\n          /></button\n        >\n      </form>\n      <form class=\"m-0\" action={githubUrl} target=\"_blank\">\n        <button\n          class=\"flex items-center justify-center gap-1 bg-[var(--sl-color-gray-6)] text-[var(--sl-color-white)]\"\n          >View on GitHub <Icon class=\"inline\" name=\"external\" size=\"20px\" />\n        </button>\n      </form>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "docs/src/components/Logo.astro",
    "content": "---\nconst { className } = Astro.props;\n---\n\n<style>\n  [aria-label=\"DASH ASCII Logo\"] {\n    transform: skew(-20deg);\n    width: fit-content;\n    background-image: var(--hdr-gradient);\n    background-size: 100%;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    -moz-background-clip: text;\n    -moz-text-fill-color: transparent;\n    background-repeat: repeat;\n  }\n</style>\n\n<div\n  aria-label=\"DASH ASCII Logo\"\n  class={`leading-[1.09] text-blue-300 not-dark:text-blue-500 ${className}`}\n>\n  ▜▔▚▐▔▌▚▔▐ ▌<br />\n  ▟▁▞▐▔▌▁▚▐▔▌\n</div>\n"
  },
  {
    "path": "docs/src/components/NerdFontIcon.astro",
    "content": "---\nconst { icon } = Astro.props;\nimport \"../styles/nerd-font.css\";\n---\n\n<code class=\"rounded bg-blue-950 text-xl text-blue-200\"\n  ><i class={`nf ${icon}`}></i></code\n>\n"
  },
  {
    "path": "docs/src/components/PillLink.astro",
    "content": "---\nconst { href, target, class: className } = Astro.props;\n---\n\n<a\n  class:list={[\n    \"flex items-center gap-2 text-[var(--sl-color-accent-low)] no-underline hover:underline\",\n    className,\n  ]}\n  href={href}\n  target={target}\n>\n  <div\n    class=\"flex h-[38px] items-center gap-2 rounded-lg px-1 text-[var(--sl-color-accent-low)] hover:bg-[var(--sl-color-gray-5)] lg:border lg:border-[var(--sl-color-gray-5)] lg:bg-[var(--sl-color-black)] lg:px-2 lg:py-1\"\n  >\n    <slot />\n  </div>\n</a>\n"
  },
  {
    "path": "docs/src/components/ReleaseVersionButton.astro",
    "content": "---\nimport { getLatestVersion } from \"../data/latestVersion\";\n\nconst response = await getLatestVersion();\n---\n\n<form action=\"https://github.com/dlvhdr/gh-dash/releases\">\n  <button\n    class=\"m-0 rounded-lg bg-[var(--sl-color-black)] px-2 py-1 text-sm text-[var(--sl-color-gray-3)]\"\n    >{response?.tag_name}</button\n  >\n</form>\n"
  },
  {
    "path": "docs/src/components/Showcase.astro",
    "content": "---\nconst { reversed } = Astro.props;\n---\n\n<div class={`flex flex-col gap-8 w-full lg:w-auto lg:gap-18 items-center`}>\n  <div\n    class={`flex w-full flex-col gap-0 items-center lg:gap-8 ${reversed ? \"lg:flex-row-reverse\" : \"lg:flex-row\"}`}\n  >\n    <slot />\n  </div>\n  <div class=\"mt-0 text-[var(--sl-color-gray-5)]\">──◇──</div>\n</div>\n"
  },
  {
    "path": "docs/src/components/Sponsorship.astro",
    "content": "---\nimport { getSponsorshipGoal } from \"../data/sponsorshipGoal\";\n\nconst response = await getSponsorshipGoal();\nconst current = response.data.user.monthlyEstimatedSponsorsIncomeInCents / 100;\nconst GOAL = 250; // USD\n---\n\n<div class={`text-center mt-0 max-w-full md:max-w-[80ch]`}>\n  <div class=\"relative mt-1\">\n    <progress\n      id=\"sponsorship-goal\"\n      value={current}\n      max={GOAL}\n      class=\"h-4 w-full appearance-none [&::-moz-progress-bar]:bg-pink-200 dark:[&::-moz-progress-bar]:bg-pink-300 [&::-webkit-progress-bar]:rounded [&::-webkit-progress-bar]:bg-[var(--sl-color-gray-5)] [&::-webkit-progress-value]:rounded [&::-webkit-progress-value]:bg-pink-400 dark:[&::-webkit-progress-value]:bg-pink-800\"\n    >\n      {\n        Intl.NumberFormat(\"en-US\", {\n          style: \"currency\",\n          currency: \"USD\",\n        }).format(current)\n      } / {\n        Intl.NumberFormat(\"en-US\", {\n          style: \"currency\",\n          currency: \"USD\",\n        }).format(GOAL)\n      }\n    </progress>\n    <p\n      class=\"absolute -top-[0.6rem] right-0 left-0 text-xs text-[var(--sl-color-gray-2)] mix-blend-hard-light dark:mix-blend-lighten\"\n    >\n      {\n        Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 2 }).format(\n          (current / GOAL) * 100,\n        )\n      }% towards ${GOAL} per month goal\n    </p>\n  </div>\n</div>\n"
  },
  {
    "path": "docs/src/components/SponsorshipGoal.astro",
    "content": "---\nimport { getSponsorshipGoal } from \"../data/sponsorshipGoal\";\nimport { Icon } from \"@astrojs/starlight/components\";\n\nconst { variant } = Astro.props;\n\nconst response = await getSponsorshipGoal();\nconst current = response.data.user.monthlyEstimatedSponsorsIncomeInCents / 100;\nconst GOAL = 150; // USD\n---\n\n<div class={`text-center mt-0 max-w-full md:max-w-[80ch]`}>\n  <label\n    for=\"sponsorship-goal\"\n    class=\"mt-0 mb-0 text-sm text-pretty text-[var(--sl-color-gray-3)]\"\n  >\n    {\n      variant !== \"mini\" ? (\n        <div class=\"hidden md:block\">\n          <Icon\n            name=\"information\"\n            size=\"16px\"\n            class=\"mr-1/2 relative -bottom-[2.5px] inline\"\n          />\n          Get early access through the\n          <a\n            class=\"text-[var(--sl-color-gray-2)] no-underline\"\n            href=\"/insiders\"\n          >\n            Insiders Program\n          </a>\n        </div>\n      ) : null\n    }\n  </label>\n  <div class=\"relative mt-1\">\n    <progress\n      id=\"sponsorship-goal\"\n      value={current}\n      max={GOAL}\n      class=\"h-4 w-full appearance-none [&::-moz-progress-bar]:bg-pink-200 dark:[&::-moz-progress-bar]:bg-pink-300 [&::-webkit-progress-bar]:rounded [&::-webkit-progress-bar]:bg-[var(--sl-color-gray-5)] [&::-webkit-progress-value]:rounded [&::-webkit-progress-value]:bg-pink-400 dark:[&::-webkit-progress-value]:bg-pink-800\"\n    >\n      {\n        Intl.NumberFormat(\"en-US\", {\n          style: \"currency\",\n          currency: \"USD\",\n        }).format(current)\n      } / {\n        Intl.NumberFormat(\"en-US\", {\n          style: \"currency\",\n          currency: \"USD\",\n        }).format(GOAL)\n      }\n    </progress>\n    <p\n      class=\"absolute -top-[0.6rem] right-0 left-0 text-xs text-[var(--sl-color-gray-2)] mix-blend-hard-light dark:mix-blend-lighten\"\n    >\n      {\n        Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 2 }).format(\n          (current / GOAL) * 100,\n        )\n      }% towards ${GOAL} per month goal\n    </p>\n  </div>\n  <p\n    class={`flex justify-center items-center gap-2 mt-0 md:mt-0 mb-0 text-xs md:text-sm text-[var(--sl-color-gray-3) text-pretty`}\n  >\n    <span\n      class=\"hidden text-pink-400 md:inline-block md:align-middle dark:text-pink-600\"\n    >\n      <Icon class=\"inline align-text-top\" name=\"heart\" size=\"16px\" />\n    </span> Hitting the goal will open source the app\n  </p>\n</div>\n"
  },
  {
    "path": "docs/src/components/StargazersCount.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\nimport PillLink from \"./PillLink.astro\";\nimport { getStars } from \"../data/stars\";\n\nconst response = await getStars();\n---\n\n<PillLink href=\"https://github.com/dlvhdr/gh-dash\" target=\"_blank\">\n  <Icon name=\"github\" size=\"20px\" /><span class=\"hidden lg:block\"\n    >{\n      Intl.NumberFormat(\"en-US\", {\n        notation: \"compact\",\n        maximumSignificantDigits: 2,\n      })\n        .format(response.stargazers_count)\n        .toLocaleLowerCase()\n    }</span\n  >\n</PillLink>\n"
  },
  {
    "path": "docs/src/components/StargazersFallback.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\nimport PillLink from \"./PillLink.astro\";\n---\n\n<PillLink href=\"https://github.com/dlvhdr/gh-dash\" target=\"_blank\">\n  <Icon name=\"github\" size=\"20px\" />{\" \"}\n  <span class=\"animate-pulse\">GitHub</span>\n</PillLink>\n"
  },
  {
    "path": "docs/src/components/SupportSection.astro",
    "content": "---\nimport { Icon } from \"@astrojs/starlight/components\";\nimport Sponsorship from \"../components/Sponsorship.astro\";\n---\n\n<h2 class=\"mt-8 mb-2 text-center !text-3xl\">Donate To Support the Project</h2>\n\n<div class=\"mt-12 flex flex-col gap-2 text-center\">\n  <p class=\"text-pretty lg:w-[80ch]\">\n    I'm always working on new terminal UIs to make my life easier.<br />By\n    donating or joining <a href=\"/insiders\">Insiders</a> you can support this and\n    any of my other projects.<br />\n  </p>\n  <div class=\"m-auto flex max-w-lg flex-col justify-center\">\n    <p class=\"mt-4 text-[var(--sl-color-gray-3)]\">\n      This is my current sponsorship goal\n    </p>\n    <Sponsorship server:defer />\n  </div>\n</div>\n\n<form action=\"/donating\" class=\"flex w-full justify-center pt-8\">\n  <button\n    type=\"submit\"\n    class=\"flex items-center gap-2 bg-[var(--sl-color-accent)] px-4 py-2 font-bold text-black\"\n  >\n    Donate!\n    <Icon class=\"mt-0\" name=\"heart\" size=\"20px\" color=\"var(--color-pink-800)\" />\n  </button>\n</form>\n"
  },
  {
    "path": "docs/src/components/Terminal.astro",
    "content": "---\nimport \"../styles/terminal.css\";\nconst { className, title = \"gh dash\" } = Astro.props;\n---\n\n<div class={`terminal ${className}`}>\n  <div class=\"top\">\n    <div class=\"btns\">\n      <span class=\"circle red\"></span>\n      <span class=\"circle yellow\"></span>\n      <span class=\"circle green\"></span>\n    </div>\n    <div class=\"terminal-title\">{title} -- 70x32</div>\n  </div>\n  <div class=\"body\">\n    <slot />\n  </div>\n</div>\n"
  },
  {
    "path": "docs/src/components/ThemeSelect.astro",
    "content": "---\nimport Select from \"@astrojs/starlight/components/Select.astro\";\n---\n\n<starlight-theme-select>\n  {\n    /* TODO: Can we give this select a width that works well for each language’s strings? */\n  }\n  <Select\n    icon=\"laptop\"\n    label={Astro.locals.t(\"themeSelect.accessibleLabel\")}\n    options={[\n      {\n        label: Astro.locals.t(\"themeSelect.dark\"),\n        selected: false,\n        value: \"dark\",\n      },\n      {\n        label: Astro.locals.t(\"themeSelect.light\"),\n        selected: false,\n        value: \"light\",\n      },\n      {\n        label: Astro.locals.t(\"themeSelect.auto\"),\n        selected: true,\n        value: \"auto\",\n      },\n    ]}\n    width=\"20px\"\n  />\n</starlight-theme-select>\n\n{/* Inlined to avoid FOUC. Uses global scope from `ThemeProvider.astro` */}\n<script is:inline>\n  StarlightThemeProvider.updatePickers();\n</script>\n\n<script>\n  type Theme = \"auto\" | \"dark\" | \"light\";\n\n  /** Key in `localStorage` to store color theme preference at. */\n  const storageKey = \"starlight-theme\";\n\n  /** Get a typesafe theme string from any JS value (unknown values are coerced to `'auto'`). */\n  const parseTheme = (theme: unknown): Theme =>\n    theme === \"auto\" || theme === \"dark\" || theme === \"light\" ? theme : \"auto\";\n\n  /** Load the user’s preference from `localStorage`. */\n  const loadTheme = (): Theme =>\n    parseTheme(\n      typeof localStorage !== \"undefined\" && localStorage.getItem(storageKey),\n    );\n\n  /** Store the user’s preference in `localStorage`. */\n  function storeTheme(theme: Theme): void {\n    if (typeof localStorage !== \"undefined\") {\n      localStorage.setItem(\n        storageKey,\n        theme === \"light\" || theme === \"dark\" ? theme : \"\",\n      );\n    }\n  }\n\n  /** Get the preferred system color scheme. */\n  const getPreferredColorScheme = (): Theme =>\n    matchMedia(\"(prefers-color-scheme: light)\").matches ? \"light\" : \"dark\";\n\n  /** Update select menu UI, document theme, and local storage state. */\n  function onThemeChange(theme: Theme): void {\n    StarlightThemeProvider.updatePickers(theme);\n    document.documentElement.dataset.theme =\n      theme === \"auto\" ? getPreferredColorScheme() : theme;\n    storeTheme(theme);\n  }\n\n  // React to changes in system color scheme.\n  matchMedia(`(prefers-color-scheme: light)`).addEventListener(\"change\", () => {\n    if (loadTheme() === \"auto\") onThemeChange(\"auto\");\n  });\n\n  class StarlightThemeSelect extends HTMLElement {\n    constructor() {\n      super();\n      onThemeChange(loadTheme());\n      this.querySelector(\"select\")?.addEventListener(\"change\", (e) => {\n        if (e.currentTarget instanceof HTMLSelectElement) {\n          onThemeChange(parseTheme(e.currentTarget.value));\n        }\n      });\n    }\n  }\n  customElements.define(\"starlight-theme-select\", StarlightThemeSelect);\n</script>\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/dash-integration.mdx",
    "content": "---\ntitle: DASH Integration\n---\n\nIn order to launch `ENHANCE` from `DASH` [add a custom keybind](../../../configuration/keybindings) to your\n`DASH` config:\n\n```yaml\nkeybindings:\n  prs:\n    - key: T\n      command: gh enhance -R {{.RepoName}} {{.PrNumber}}\n```\n\n_Note: You can change the <kbd>T</kbd> keybind to whatever you want, I just remember it\nby the `Test` mnemonic._\n\n## Using `tmux`\n\nIf you're working with `tmux`, you can also launch it in a new window:\n\n```yaml\nkeybindings:\n  prs:\n    - key: T\n      command: >-\n        tmux new-window '\n          gh enhance -R {{.RepoName}} {{.PrNumber}}\n        '\n```\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/getting-started.mdx",
    "content": "---\ntitle: Installation\n---\n\nimport { Aside } from \"@astrojs/starlight/components\";\n\nGet started using `ENHANCE` to manage your PRs GitHub Actions.\n\n## Recommended Steps\n\n1. Install the `gh` CLI\n\n   ```bash\n   brew install gh # e.g. if on macOS\n   ```\n\n   Or, see the [installation instructions][01] for other platforms.\n\n2. Install this extension:\n\n   ```sh\n   # if you're *not* in the insiders program\n   gh extension install dlvhdr/gh-enhance\n\n   # if you are in the insiders program\n   gh extension install dlvhdr-insiders/gh-enhance\n\n   ```\n\n3. To get the icons to render properly, you should download and install a [Nerd font][02]. Then,\n   select that font as your font for your terminal of choice.\n\n   ```bash\n    brew install --cask font-fira-code-nerd-font\n   ```\n\n---\n\n<details>\n<summary>How do I get these exact colors and font?</summary>\nThe screenshots in this documentation use [Ghostty][n01] with the\n[tokyonight theme][n02] and the [Fira Code][n03] Nerd Font. For the full setup,\nsee [these dotfiles][n04].\n\n[n01]: https://ghostty.org/\n[n02]: https://github.com/folke/tokyonight.nvim\n[n03]: https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/FiraCode\n[n04]: https://github.com/dlvhdr/dotfiles\n\n</details>\n\n---\n\n## Manual Steps\n\nIf you want to install this extension **manually**, follow these steps:\n\n1. Clone the repo\n\n- If you're **not** in the insiders program:\n\n  ```bash\n  # Git\n  git clone https://github.com/dlvhdr/gh-enhance\n\n  # or with the GitHub CLI\n  gh repo clone dlvhdr/gh-enhance\n  ```\n\n- If you are in the insiders program:\n\n  ```bash\n    # Git\n    git clone https://github.com/dlvhdr-insiders/gh-enhance\n\n    # or with the GitHub CLI\n    gh repo clone dlvhdr-insiders/gh-enhance\n  ```\n\n2. `cd` into it\n\n   ```bash\n   cd gh-enhance\n   ```\n\n3. Install it locally\n\n   ```bash\n   gh extension install .\n   ```\n\n[01]: https://github.com/cli/cli#installation\n[02]: https://www.nerdfonts.com/\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/index.mdx",
    "content": "---\ntitle: ENHANCE\n---\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/keybindings.mdx",
    "content": "---\ntitle: Keybindings\n---\n\n`ENHANCE` supports the following keybindings.\n\n## Navigating\n\n| Key            | Action        |\n| -------------- | ------------- |\n| <kbd>j/↓</kbd> | next row      |\n| <kbd>k/↑</kbd> | previous row  |\n| <kbd>l</kbd>   | next pane     |\n| <kbd>h</kbd>   | previous pane |\n| <kbd>g</kbd>   | go to top     |\n| <kbd>G</kbd>   | go to bottom  |\n| <kbd>→</kbd>   | move right    |\n| <kbd>←</kbd>   | move left     |\n| <kbd>?</kbd>   | toggle help   |\n\n## Searching\n\n| Key               | Action         |\n| ----------------- | -------------- |\n| <kbd>/</kbd>      | search in pane |\n| <kbd>esc</kbd>    | cancel search  |\n| <kbd>enter</kbd>  | apply search   |\n| <kbd>ctrl+n</kbd> | next match     |\n| <kbd>ctrl+p</kbd> | prev match     |\n\n## Actions\n\n| Key               | Action                           |\n| ----------------- | -------------------------------- |\n| <kbd>m</kbd>      | switch between flat/grouped mode |\n| <kbd>o</kbd>      | open in browser                  |\n| <kbd>O</kbd>      | open PR                          |\n| <kbd>R</kbd>      | refresh all                      |\n| <kbd>ctrl+r</kbd> | rerun                            |\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/theme.mdx",
    "content": "---\ntitle: Theming\n---\n\n`ENHANCE` supports all the themes listed in [bubbletint's website](https://lrstanley.github.io/bubbletint/).\n\nThe site shows a preview of the themes as well as provide their IDs.\n\n## Get a Theme's ID\n\nGo to [bubbletint's website](https://lrstanley.github.io/bubbletint/) and copy a theme's ID.\n\n## Using a Theme\n\nTo use a theme, pass the `ENHANCE_THEME` environment variable with the theme's ID, like so:\n\n```bash\nENHANCE_THEME=dracula gh enhance <PR_URL>\n```\n"
  },
  {
    "path": "docs/src/content/docs/companions/enhance/usage.mdx",
    "content": "---\ntitle: Usage\n---\n\nTo use `enhance`, follow these steps after you've [installed it][01]:\n\n1. Run\n\n   ```\n    gh enhance [<PR URL> | <PR number>] [flags]\n   ```\n\n   **Examples:**\n\n   ```bash\n    # look up checks via a full URL to a GitHub PR\n    gh enhance https://github.com/dlvhdr/gh-dash/pull/767\n\n    # look up checks via a PR number when inside a clone of dlvhdr/gh-dash\n    # will look at checks of https://github.com/dlvhdr/gh-dash/pull/767\n    gh enhance 767\n   ```\n\n2. Press <kbd>?</kbd> for help.\n\nRun `gh enhance --help` for more info:\n\n```\nUsage:\n  gh enhance [<url> | <number>] [flags]\n\nFlags:\n      --debug         passing this flag will allow writing debug output to debug.log\n      --flat          passing this flag will present checks as a flat list\n  -h, --help          help for gh-enhance\n  -R, --repo string   [HOST/]OWNER/REPO   Select another repository using the [HOST/]OWNER/REPO format\n  -v, --version       version for gh-enhance\n```\n"
  },
  {
    "path": "docs/src/content/docs/companions/index.mdx",
    "content": "---\ntitle: Companion Apps\n---\n"
  },
  {
    "path": "docs/src/content/docs/configuration/defaults.mdx",
    "content": "---\ntitle: Defaults\n---\n\n## Default Options (`defaults`)\n\nThese settings define the default behavior for the dashboard. You can override many of these\nsettings on a per-section basis.\n\n```yaml\ndefaults:\n  issuesLimit: 20\n  notificationsLimit: 20\n  prApproveComment: LGTM\n  preview:\n    open: true\n    width: 0.45\n  prsLimit: 20\n  refetchIntervalMinutes: 30\n  view: prs\n```\n\nBy default, the dashboard is configured to:\n\n- Display the preview pane with a width of 45% for all work items.\n- Only fetch 20 PRs, issues, and notifications at a time for each section.\n- Display the PRs view when the dashboard loads.\n- Refetch PRs and issues for each section every 30 minutes.\n- Display dates using relative values.\n\nFor more details on the default layouts, see the documentation for [PR] and [issue] layout definitions.\n\n[PR]: /configuration/layout/pr/\n[issue]: /configuration/layout/issue/\n\n### Layout Options (`layout`)\n\nThis setting defines the layout for the work item tables in the dashboard. You can override\nthese settings in any section you define in the [`prSections`] or [`issueSections`] settings.\n\nThey determine which columns are displayed and how.\n\n[`prSections`]: /configuration/pr-section\n[`issueSections`]: /configuration/issue-section\n\n#### PR Section Layout\n\nYou can define how a PR section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.primary`] setting.\n\nFor more information, see [PR Section Layout](/configuration/layout/pr).\n\n[`width`]: /configuration/layout/options\n[`theme.colors.text.primary`]: /configuration/theme\n\n#### Issue Section Layout (`issues`)\n\nYou can define how an issue section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.primary`] setting.\n\nFor more information, see [Issue Section Layout](/configuration/layout/issue).\n\n[`width`]: layout.options.width\n[`theme.colors.text.primary`]: theme.colors.text.primary\n\n### PR Fetch Limit\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many PRs the dashboard should fetch for each section when:\n\n- The dashboard first loads.\n- The [fetch interval] elapses.\n- You navigate to the next PR in a table without another fetched PR to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\n[fetch interval]: #refetch-interval-in-minutes-refetchintervalminutes\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n\n### Issue Fetch Limit (`issuesLimit`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many issues the dashboard should fetch for each section when:\n\n- The dashboard first loads.\n- The [fetch interval] elapses.\n- You navigate to the next issue in a table without another fetched issue to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\n[fetch interval]: #refetch-interval-in-minutes-refetchintervalminutes\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n\n### Notifications Fetch Limit (`notificationsLimit`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many notifications the dashboard should fetch when:\n\n- The dashboard first loads.\n- You navigate to the next notification in a table without another fetched notification to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n\n### Preview Pane (`preview`)\n\nThese settings define how the preview pane displays in the dashboard. You can specify\nwhether the preview pane is open by default and how many columns wide it should be when\n\n#### Open on Load (`open`)\n\n| Type    | Default |\n| :------ | :-----: |\n| Boolean |  true   |\n\nSpecifies whether the preview pane should be open by default for the selected work item\nwhen the dashboard loads. You can always use the [toggle preview pane] command to\ntoggle the preview pane's visibility.\n\nBy default, the dashboard displays the preview pane.\n\n[toggle preview pane]: /getting-started/keybindings/preview/#p---toggle-preview-pane\n\n#### Preview Pane Width (`width`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Number  |    0    |  0.45   |\n\nSpecifies the width of the preview pane. You can set the size to the percentage of the terminal size by using fractions (e.g. 0.4 would be 40%).\n\nBy default, the preview pane is 45% wide.\n\n### Refetch Interval in Minutes (`refetchIntervalMinutes`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    0    |   30    |\n\nThis setting defines how often the dashboard should fetch issues and PRs from GitHub. The\ndashboard fetches work items for every section in the active view when the dashboard loads\nand the first time you switch to the inactive view.\n\nAfter the dashboard fetches the work items for the first time, it waits until this setting's\ndefined interval elapses before fetching the work items again.\n\nBy default, the dashboard refetches work items every 30 minutes.\n\nTo disable the refetching interval set it to 0.\n\nYou can always use the [refresh current section] or [refresh all sections] command to\nrefetch work items in the current view. If you change the search query for a view, the\ndashboard fetches results for the updated query immediately.\n\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n\n### Date format (`dateFormat`)\n\n| Type   |  Default   |\n| :----- | :--------: |\n| String | \"relative\" |\n\nThis setting defines how dates are formatted. The format either be \"relative\" or a [go time format].\n\nBy default, the format is \"relative\" which fits just inside the default column width of\nupdated at in the issues and pull request layouts.\n\nYou may need to adjust the layout column width depending on your format.\n\n[go time format]: https://pkg.go.dev/time#pkg-constants\n\n### Default View (`view`)\n\n| Type   |     Options     | Default |\n| :----- | :-------------: | :-----: |\n| String | \"prs\", \"issues\" |   20    |\n\nThis setting defines whether the dashboard should display the PRs or Issues view when it\nfirst loads.\n\nBy default, the dashboard displays the PRs view.\n\n### PR Approval (`prApproveComment`)\n\n| Type   | Default |\n| :----- | :-----: |\n| String | \"LGTM\"  |\n\nThis setting defines the default comment used as a starting point when [approving a PR].\nThis can be set as an empty string to not prefill a comment.\n\nBy default, the comment is \"LGTM\".\n\n[approving a PR]: /getting-started/keybindings/selected-pr/#v---approve-pr\n\n## Confirm Quit (`confirmQuit`)\n\n| Type    | Default |\n| :------ | :-----: |\n| Boolean |  false  |\n\nThis setting specifies whether the user needs to confirm when quitting `gh-dash`\nWhen this is on, `gh-dash` shows a prompt that requires the user to press <kbd>y</kbd>/<kbd>Enter</kbd> to actually quit.\nPressing any other key dismisses the message.\n\nBy default, dash doesn't need a confirmation.\n\n[approving a PR]: /getting-started/keybindings/selected-pr/#v---approve-pr\n\n\n## Include Read Notifications (`includeReadNotifications`)\n\n| Type    | Default |\n| :------ | :-----: |\n| Boolean |  true   |\n\nThis setting controls whether the default notification view includes read notifications\nalongside unread ones, matching GitHub’s default behavior.\n\nWhen set to `true` (the default), notification sections with no explicit `is:` filter show\nboth read and unread notifications. When set to `false`, they show only unread notifications\nplus any bookmarked items.\n\nExplicit filters like `is:unread` or `is:read` in a section’s `filters` always override\nthis setting.\n\n```yaml\n# Show only unread notifications by default (old behavior)\nincludeReadNotifications: false\n```\n"
  },
  {
    "path": "docs/src/content/docs/configuration/examples.mdx",
    "content": "---\ntitle: Examples\n---\n\nThese examples show a few ways you might configure your dashboard.\n\n## Complete Examples\n\n- The config for the `gh-dash` repo under [.gh-dash.yml](https://github.com/dlvhdr/gh-dash/blob/main/.gh-dash.yml)\n- My config under my dotfiles repo [dlvhdr/dotfiles](https://github.com/dlvhdr/dotfiles/blob/main/nix/module/gh-dash/configs/config.yml)\n- Many other configs found by [searching GitHub](https://github.com/search?q=path%3Agh-dash%2Fconfig.yml&type=code)\n\n## Default Values\n\n<div style=\"max-height: 500px; overflow-y:scroll;\">\n\n```yaml\nprSections:\n  - title: \"My Pull Requests\"\n    filters: \"is:open author:@me\"\n  - title: \"Needs My Review\"\n    filters: \"is:open review-requested:@me\"\n  - title: \"Involved\"\n    filters: \"is:open involves:@me -author:@me\"\n\nissuesSections:\n  - title: \"My Issues\"\n    filters: \"is:open author:@me\"\n  - title: \"Assigned\"\n    filters: \"is:open assignee:@me\"\n  - title: \"Involved\"\n    filters: \"is:open involves:@me -author:@me\"\n\nnotificationsSections:\n  - title: \"All\"\n    filters: \"\"\n  - title: \"Created\"\n    filters: \"reason:author\"\n  - title: \"Participating\"\n    filters: \"reason:participating\"\n  - title: \"Mentioned\"\n    filters: \"reason:mention\"\n  - title: \"Review Requested\"\n    filters: \"reason:review-requested\"\n  - title: \"Assigned\"\n    filters: \"reason:assign\"\n  - title: \"Subscribed\"\n    filters: \"reason:subscribed\"\n  - title: \"Team Mentioned\"\n    filters: \"reason:team-mention\"\n\npager:\n  diff: less\nshowAuthorIcons: true\nsmartFilteringAtLaunch: true\n\ndefaults:\n  view: prs\n  refetchIntervalMinutes: 5\n  layout:\n    prs:\n      repoName:\n        grow: true,\n        width: 10\n        hidden: false\n      base:\n        hidden: true\n  preview:\n    open: true\n    width: 84\n  prsLimit: 20\n  issuesLimit: 20\n  notificationsLimit: 20\n\ntheme:\n  ui:\n    sectionsShowCount: true\n    table:\n      compact: false\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#B0B3BF\"\n      warning: \"#E0AF68\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1B1B33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\n```\n\n</div>\n\n## Theming Example\n\nThe color palette in this example is inspired by the [Monokai Pro Spectrum Filter][01] palette.\n\n```yaml\ntheme:\n  colors:\n    text:\n      primary: \"#F7F1FF\"\n      secondary: \"#5AD4E6\"\n      inverted: \"#F7F1FF\"\n      faint: \"#3E4057\"\n      warning: \"#FC618D\"\n      success: \"#7BD88F\"\n    background:\n      selected: \"#535155\"\n    border:\n      primary: \"#948AE3\"\n      secondary: \"#7BD88F\"\n      faint: \"#3E4057\"\n```\n\n[01]: https://www.vscolors.com/themes/f5d7ffda-c1d6-4070-ba80-803c705a1ee6-3ed72ace\n\n## Custom Keybindings Example\n\nUtilizing `tmux` we can launch other TUIs:\n\n```yaml\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: >\n        cd {{.RepoPath}} && lazygit\n  prs:\n    - key: O\n      builtin: checkout\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n    - key: C\n      name: code review\n      command: >\n        tmux new-window -c {{.RepoPath}} '\n        nvim -c \":silent Octo pr edit {{.PrNumber}}\"\n        '\n    - key: a\n      name: lazygit add\n      command: >\n        cd {{.RepoPath}} && git add -A && lazygit\n    - key: v\n      name: approve\n      command: >\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n```\n\n## Repo Paths Example\n\nConfigure [`repoPaths`](/configuration/repo-paths) in order to check out PRs in\nthe right git directory.\n\n```yaml\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\n  my-work-org/*: ~/code/my-work-org/*\n  charmbracelet/*: ~/code/charm/*\n  dlvhdr/dotfiles: ~/dotfiles\n```\n"
  },
  {
    "path": "docs/src/content/docs/configuration/index.mdx",
    "content": "---\ntitle: How to Configure\n---\n\nimport { Aside, LinkCard, CardGrid } from \"@astrojs/starlight/components\";\n\n`dash` has extensive configuration options.\n\n- Modify the default config which is usually under `$HOME/.config/gh-dash/config.yml`.\n- Use the [`--config`][01] flag to specify a different configuration file.\n- Create a `.gh-dash.yml` file in a repo for project specific configuration.\n\n<details>\n  <summary>Give me more details!</summary>\n  Using the following logic:\n1. If `$GH_DASH_CONFIG` is a non-empty string, `dash` will use this file for\n   its configuration.\n2. If `$GH_DASH_CONFIG` isn't set and you're in a git repository, it will look for `.gh-dash.yml` or `.gh-dash.yaml`\n   in the repository root.\n3. If neither of the above applies, then:\n  - If `$XDG_CONFIG_HOME` is a non-empty string, the default path is `$XDG_CONFIG_HOME/gh-dash/config.yml`.\n  - If `$XDG_CONFIG_HOME` isn't set, then:\n    - On Linux and macOS systems, the default path is `$HOME/.config/gh-dash/config.yml`.\n    - On Windows systems, the default path is `%USERPROFILE%\\.config\\gh-dash\\config.yml`.\n\n</details>\n\n---\n\n<br />\n\n<Aside type=\"tip\">\n  Just want a few examples for inspiration? Check out the\n  [examples](./examples).\n</Aside>\n\n[01]: /getting-started/usage/#--config\n\n## Options\n\nThe configuration for `dash` is schematized. The pages in this section list the configuration\noptions, their defaults, and how you can use them.\n\n### Schema\n\nDocumentation and schema for the configuration of your GitHub dashboard.\n\n<CardGrid>\n  <LinkCard\n    title=\"Schema\"\n    href=\"./schema\"\n    description=\"Configure your IDE to autocomplete when editing the config file\"\n  />\n  <LinkCard\n    title=\"Defaults\"\n    href=\"./defaults\"\n    description=\"Documentation for the default setting options for your GitHub dashboard.\"\n  />\n  <LinkCard\n    title=\"Searching\"\n    href=\"./searching\"\n    description=\"How to search and filter issues and prs\"\n  />\n  <LinkCard\n    title=\"PR Section\"\n    href=\"./pr-section\"\n    description=\"Documentation for configuring the PR sections of your GitHub dashboard.\"\n  />\n  <LinkCard\n    title=\"Issue Section\"\n    href=\"./issue-section\"\n    description=\"Documentation for configuring the issue's sections of your GitHub dashboard.\"\n  />\n  <LinkCard\n    title=\"Keybindings\"\n    href=\"./keybindings\"\n    description=\"Documentation for defining commands for your GitHub dashboard.\"\n  />\n  <LinkCard\n    title=\"Layout\"\n    href=\"./layout/options\"\n    description=\"Documentation for configuring your GitHub dashboard’s layout.\"\n  />\n  <LinkCard\n    title=\"Theme\"\n    href=\"./theme\"\n    description=\"Documentation for configuring your GitHub dashboard’s theme.\"\n  />\n  <LinkCard\n    title=\"Reusing Settings\"\n    href=\"./reusing.mdx\"\n    description=\"Define global settings that will always be applied\"\n  />\n</CardGrid>\n"
  },
  {
    "path": "docs/src/content/docs/configuration/issue-section.mdx",
    "content": "---\ntitle: Issue Sections\n---\n\n# Issues Section Options (`issuesSections`)\n\nDefines a section in the dashboard's issues view.\n\n- Every section must define a [`title`] and [`filters`].\n- When you define [`limit`] for a section, that value overrides the\n  [`defaults.issuesLimit`] setting.\n- When you define [`layout`] for a section, that value overrides the\n  [`defaults.layout.issue`] setting.\n\n[`title`]: #issues-title-title\n[`filters`]: #issues-filters-filters\n[`limit`]: #issues-fetch-limit-limit\n[`layout`]: #issues-section-layout-layout\n[`defaults.issuesLimit`]: /configuration/defaults/#issue-fetch-limit-issueslimit\n[`defaults.layout.issue`]: /configuration/defaults/#layout-options-layout\n\n## Issues Title (`title`)\n\nThis setting defines the section's name. The dashboard displays this value in the tabs for\nthe issues view.\n\n## Issues Filters (`filters`)\n\nThis setting defines the [GitHub search filters][01] for the Issues in the section's table.\n\nDon't specify `is:issue` for this setting. The dashboard always adds that filter for Issues\nsections. \n\nNote issues from archived repositories are excluded by default with `archived:false`.\n\nYou can define any combination of search filters. To make it easier to read and maintain\nyour filters, we recommend using the `>-` syntax after the `filter` key and writing one\nfilter per line.\n\nFor example:\n\n```yaml\n- # Involved\n  filter: >-\n    is:open\n    involves:@me\n    -author:@me\n    updated:>={{ nowModify \"-2w\" }}\n```\n\nFor more information about writing filters for searching GitHub, see [Searching].\n\n[Searching]: /configuration/searching\n\n## Issues Section Layout (`layout`)\n\nYou can define how a Issues section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.issueimary`] setting.\n\n[`width`]: /configuration/layout/options#layout-options-width\n[`theme.colors.text.issueimary`]: /configuration/theme\n\n## Issues Fetch Limit (`limit`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many Issues the dashboard should fetch for the section when:\n\n- The dashboard first loads.\n- The [fetch interval] elapses.\n- You navigate to the next issue in a table without another fetched issue to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\nThis setting overrides the [`defaults.issuesLimit`] setting.\n\n[01]: https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests\n[fetch interval]: /configuration/defaults/#refetch-interval-in-minutes-refetchintervalminutes\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n[`defaults.issuesLimit`]: /configuration/defaults/#issue-fetch-limit\n"
  },
  {
    "path": "docs/src/content/docs/configuration/keybindings/index.mdx",
    "content": "---\ntitle: Custom Keybindings\n---\n\n`dash` allows you to override existing keybindings as well as add custom ones.\n\nEvery valid entry for the configuration options must have a `key` and `command`.\nWhen a user presses the key or key combination the dashboard shells out and executes the command.\n\nTo help you identify your custom commands, an additional `name` property can be supplied to describe it in the help menu.\n\nThere are 3 types of keybindings: `universal`, `prs` and `issues`.\n\n## Universal Keybindings\n\nDefine keybindings that will work in any view.\n\nFor example:\n\n```yaml\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: >\n        cd {{.RepoPath}} && lazygit\n    - key: s\n      builtin: search\n```\n\n### Built-in Commands\n\nThe following built-in universal commands can be overridden with custom keybinds:\n\n| Command         | Description                                     |\n| --------------- | ----------------------------------------------- |\n| `up`            | row up                                          |\n| `down`          | row down                                        |\n| `firstLine`     | go to first row                                 |\n| `lastLine`      | go to last row                                  |\n| `togglePreview` | toggle the preview pane                         |\n| `openGithub`    | open the selection in GitHub                    |\n| `refresh`       | refresh the current section                     |\n| `refreshAll`    | refresh all sections                            |\n| `redraw`        | redraw the screen - in case of visual artifacts |\n| `pageDown`      | go one page down in the preview pane            |\n| `pageUp`        | go one page up in the preview pane              |\n| `nextSection`   | go to next section                              |\n| `prevSection`   | go to previous section                          |\n| `search`        | focus the search bar                            |\n| `copyurl`       | copy the URL of the selected row                |\n| `copyNumber`    | copy the number of the selected row             |\n| `help`          | toggle the help menu                            |\n| `quit`          | quit gh-dash                                    |\n\nSee [global keys](../../getting-started/keybindings/global/) and [navigation keys](../../getting-started/keybindings/navigation/) for more details.\n\n## PR Keybindings\n\nDefine any number of keybindings for the PRs view or override existing ones.\n\nFor example:\n\n```yaml\nkeybindings:\n  prs:\n    - key: O\n      builtin: checkout\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n    - key: g\n      name: lazygit add\n      command: >\n        cd {{.RepoPath}} && git add -A && lazygit\n    - key: v\n      name: approve\n      command: >\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n```\n\n### Available Command Arguments\n\n| Argument      | Description                                                                     |\n| ------------- | ------------------------------------------------------------------------------- |\n| `RepoName`    | The full name of the repo (e.g. `dlvhdr/gh-dash`)                               |\n| `RepoPath`    | The path to the Repo, using the `config.yml` `repoPaths` key to get the mapping |\n| `PrNumber`    | The PR number                                                                   |\n| `HeadRefName` | The PR's head branch name                                                       |\n| `BaseRefName` | The PR's base branch name                                                       |\n| `Author`      | The username of the PR author                                                   |\n\n### Built-in Commands\n\nThe following built-in PR commands can be overridden with custom keybinds:\n\n| Command            | Description                                 |\n| ------------------ | ------------------------------------------- |\n| `prevSidebarTab`   | previous sidebar tab                        |\n| `nextSidebarTab`   | next sidebar tab                            |\n| `approve`          | approve the PR                              |\n| `assign`           | assign users to the PR                      |\n| `unassign`         | unassign users from the PR                  |\n| `comment`          | add a comment to the PR                     |\n| `diff`             | show the diff of the PR                     |\n| `checkout`         | locally checkout the PR                     |\n| `close`            | close the PR                                |\n| `ready`            | mark the PR as ready                        |\n| `reopen`           | reopen a closed PR                          |\n| `merge`            | merge the PR                                |\n| `update`           | update the PR to the latest base branch     |\n| `watchChecks`      | watch the checks of the PR and get notified |\n| `approveWorkflows` | approve the runs of the PR                  |\n| `viewIssues`       | switch to the Issues view                   |\n| `summaryViewMore`  | expand the truncated PR description         |\n\nSee [PR keys](../../getting-started/keybindings/selected-pr/) for more details.\n\n## Issue Keybindings\n\nDefine any number of keybindings for the issues view or override existing ones.\n\nFor example:\n\n```yaml\nkeybindings:\n  issues:\n    key: \"P\"\n    command: >\n      gh issue pin {{ .IssueNumber }} --repo {{ .RepoName }}\n```\n\n### Available Command Arguments\n\n| Argument      | Description                                                                     |\n| ------------- | ------------------------------------------------------------------------------- |\n| `RepoName`    | The full name of the repo (e.g. `dlvhdr/gh-dash`)                               |\n| `RepoPath`    | The path to the Repo, using the `config.yml` `repoPaths` key to get the mapping |\n| `IssueNumber` | The issue number                                                                |\n| `Author`      | The username of the issue author                                                |\n\n### Built-in Commands\n\nThe following built-in PR commands can be overridden with custom keybinds:\n\n| Command    | Description                          |\n| ---------- | ------------------------------------ |\n| `label`    | edit the issue's labels              |\n| `assign`   | assign users to the issue            |\n| `unassign` | remove assigned users from the issue |\n| `comment`  | add a comment to the issue           |\n| `close`    | close the issue                      |\n| `reopen`   | reopen a closed issue                |\n| `viewPrs`  | switch to the PRs view               |\n\nSee [issue keys](../../getting-started/keybindings/selected-issue/) for more details.\n\n## Notification Keybindings\n\nDefine any number of keybindings for the notifications view or override existing ones.\n\nFor example:\n\n```yaml\nkeybindings:\n  notifications:\n    - key: d\n      builtin: markAsDone\n    - key: D\n      builtin: markAllAsDone\n```\n\n### Available Command Arguments\n\nThe command template receives different fields depending on whether the sidebar has been opened:\n\n| State            | PR template fields                       |\n| ---------------- | ---------------------------------------- |\n| Sidebar not open | `RepoName`, `PrNumber`, `RepoPath`       |\n| Sidebar open     | + `HeadRefName`, `BaseRefName`, `Author` |\n\n| State            | Issue template fields                 |\n| ---------------- | ------------------------------------- |\n| Sidebar not open | `RepoName`, `IssueNumber`, `RepoPath` |\n| Sidebar open     | + `Author`                            |\n\nIf a template references a sidebar-only field (e.g., `{{.HeadRefName}}`) before the sidebar is opened, the template engine’s `missingkey=error` option produces an error message. This is intentional — users should open the notification first to populate the full data.\n\n### Built-in Commands\n\nThe following built-in notifications commands can be overridden with custom keybinds:\n\n| Command          | Description                                        |\n| ---------------- | -------------------------------------------------- |\n| `view`           | view notification (fetches content, marks as read) |\n| `markAsDone`     | mark as done (removes from inbox)                  |\n| `markAllAsDone`  | mark all as done                                   |\n| `markAsRead`     | mark as read                                       |\n| `markAllAsRead`  | mark all as read                                   |\n| `unsubscribe`    | unsubscribe from thread                            |\n| `toggleBookmark` | toggle bookmark                                    |\n\nSee [notification keys](../../getting-started/keybindings/selected-notification/) for more details.\n"
  },
  {
    "path": "docs/src/content/docs/configuration/keybindings/issues.mdx",
    "content": "---\ntitle: Issues\nlinkTitle: >-\n  ![icon:circle-dot](lucide)&nbsp;Issues\nweight: 2\nsummary: >-\n  Documentation for defining commands in the Issues view of your GitHub dashboard.\nschematize: keybindings.issues\noutputs:\n  - HTML\n  - Schematize\n---\n"
  },
  {
    "path": "docs/src/content/docs/configuration/keybindings/prs.mdx",
    "content": "---\ntitle: PRs\nlinkTitle: >-\n  PRs\n---\n"
  },
  {
    "path": "docs/src/content/docs/configuration/layout/issue.mdx",
    "content": "---\ntitle: Issue Layout\n---\n\nimport { Aside, Code } from \"@astrojs/starlight/components\";\nimport NerdFontIcon from \"../../../../components/NerdFontIcon.astro\";\n\n# Issues Section Layout\n\nYou can define how an Issue section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.primary`] setting.\n\n[`width`]: /configuration/layout/options#column-width\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n\nBy default, Issue views display the following columns in the order they're listed:\n\n1. [`updatedAt`] with a width of 7 columns.\n1. [`state`] with a width of 3 columns.\n1. [`repo`] with a width of 15 columns.\n1. [`title`], set to grow to fill available space.\n1. [`creator`] with a width of 10 columns.\n1. [`comments`] with a width of 3 columns.\n1. [`reactions`] with a width of 3 columns.\n\n<Aside type=\"caution\" title=\"Watch out!\">\n  Even though the `state`, `title`, `comments`, and `reactions` settings\n  aren't explicitly defined in your configuration file, they're added to\n  the table unless you set their [`hidden`] option to `false`.\n\n[`hidden`]: /configuration/layout/options#hide-column\n\n</Aside>\n      \n[`updatedAt`]:    #issues-updated-at-column\n[`state`]:        #issues-state-column\n[`repo`]:         #issues-repo-column\n[`title`]:        #issues-title-column\n[`creator`]:       #issues-creator-column\n[`comments`]:           #issues-comments-column\n[`reactions`]:        #issues-reactions-column\n\n```yaml\ntitle:\n  grow: true\nassignees:\n  hidden: true\n  width: 20\ncreator:\n  width: 10\nrepo:\n  width: 15\nupdatedAt:\n  width: 7\n```\n\n## Issue Updated At Column\n\n| Property    | Type | Default                                            |\n| :---------- | :--- | :------------------------------------------------- |\n| `updatedAt` | yaml | <Code code={`width: 7`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays how recently the Issue was updated. The entry shows the time elapsed\nsince the last update, like `1h` or `3d`.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-clock\"/>\n\n## Issue State Column\n\n| Property | Type | Default                                            |\n| :------- | :--- | :------------------------------------------------- |\n| `state`  | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the issue's state. When an issue is open, the column displays the icon <NerdFontIcon icon=\"nf-oct-issue_opened\"/>\nwith the color set to `#42a0fa`. When an issue is closed, the\ncolumn displays the icon <NerdFontIcon icon=\"nf-oct-issue_closed\"/> with the color set to\n[`theme.colors.text.faint`].\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-issue_opened\"/>.\n\n[`theme.colors.text.faint`]: /configuration/theme#faint-text-color\n\n## Issue Repo Column\n\n| Property | Type | Default                                             |\n| :------- | :--- | :-------------------------------------------------- |\n| `repo`   | yaml | <Code code={`width: 15`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the name of the repository the Issue is filed in. The entry shows the\nname of the repository without the owner, like `gh-dash` for the\n`https://github.com/dlvhdr/gh-dash` repository.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-repo\"/>\n\n[`width`]: /configuration/layout/options#column-width\n\n## Issue Title Column\n\n| Property | Type | Default                                              |\n| :------- | :--- | :--------------------------------------------------- |\n| `title`  | yaml | <Code code={`grow: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the Issue's number followed by its title. This column is always displayed\nunless you set [`hidden`] to `false`. By default, it grows to fill the available space\nin the terminal after accounting for other column widths.\n\nThe heading for this column is `Title`.\n\nThe [`theme.colors.text.primary`] setting defines the issue number's color.\n\n[`hidden`]: /configuration/layout/options#hide-column\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n\n## Issue Creator Column\n\n| Property  | Type | Default                                             |\n| :-------- | :--- | :-------------------------------------------------- |\n| `creator` | yaml | <Code code={`width: 10`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the username for the person who created the Issue.\n\nThe heading for this column is `Creator`.\n\n## Issue Author Role Icon\n\n| Property      | Type | Default                                                |\n| :------------ | :--- | :----------------------------------------------------- |\n| `creatorIcon` | yaml | <Code code={`hidden: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis setting affects display of the role icon for the person who created the Issue.\n\n## Issue Assignees Column\n\n| Property    | Type | Default                                                           |\n| :---------- | :--- | :---------------------------------------------------------------- |\n| `assignees` | yaml | <Code code={`width: 20\\nhidden: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the usernames for the people assigned to the Issue.\n\nThe heading for this column is `Assignees`.\n\n## Issue Comments Column\n\n| Property   | Type | Default                                            |\n| :--------- | :--- | :------------------------------------------------- |\n| `comments` | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the count of comments on the issue as an integer.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-comment_discussion\"/>\n\n## Issue Reactions Column\n\n| Property    | Type | Default                                            |\n| :---------- | :--- | :------------------------------------------------- |\n| `reactions` | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the count of all reactions on the issue as an integer.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-thumbsup\"/>\n"
  },
  {
    "path": "docs/src/content/docs/configuration/layout/options.mdx",
    "content": "---\ntitle: Valid Options\n---\n\n## Valid Layout Options\n\nAny column can define the [`align`], [`grow`], [`width`], and [`hidden`] options.\n\n[`align`]: #column-alignment\n[`hidden`]: #hide-column\n[`grow`]: #grow-column\n[`width`]: #column-width\n\n## Grow Column\n\n| Property | Type    | Default |\n| :------- | :------ | :------ |\n| `grow`   | boolean | false   |\n\nSpecify whether the column should grow to fill the available space.\n\nSet this value to `true` and the column's width expands to fill any leftover space in the\nterminal after accounting for other columns and the preview pane. Set this value to `false`\nto use the value of [`width`] instead.\n\nWe recommend only setting this for one column in a given section layout.\n\n[`width`]: #column-width\n\n## Column Width\n\n| Property | Type    | Minimum |\n| :------- | :------ | :------ |\n| `width`  | integer | 1       |\n\nSpecify the column's width by character count. Because the dashboard expects the terminal\nfont to be monospace, this is a reliable way to ensure a minimum width for readability.\n\n## Hide Column\n\n| Property | Type    | Default |\n| :------- | :------ | :------ |\n| `hidden` | boolean | false   |\n\nSpecify whether the column should be hidden from view. Set this value to `true` to hide the\ncolumn or `false` to show it.\n\n## Column Alignment\n\n| Property | Type   | Default |\n| :------- | :----- | :------ |\n| `align`  | string | `left`  |\n\nSpecify the horizontal alignment of the column's content. Valid values are:\n\n- `left` — Align content to the left (default)\n- `right` — Align content to the right\n- `center` — Center the content\n\nThis is useful for numeric columns like comment counts where right-alignment improves readability.\n\n```yaml\nprs:\n  layout:\n    numComments:\n      width: 5\n      align: right\n```\n"
  },
  {
    "path": "docs/src/content/docs/configuration/layout/pr.mdx",
    "content": "---\ntitle: PR Layout\n---\n\nimport { Aside, Code } from \"@astrojs/starlight/components\";\nimport NerdFontIcon from \"../../../../components/NerdFontIcon.astro\";\n\n# PR Section Layout\n\nYou can define how a PR section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.primary`] setting.\n\n[`width`]: /configuration/layout/options/#column-width\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n\nBy default, PR views display the following columns in the order they're listed:\n\n1. [`updatedAt`] with a width of 7 columns.\n1. [`state`] with a width of 3 columns.\n1. [`repo`] with a width of 15 columns.\n1. [`title`], set to grow to fill available space.\n1. [`author`] with a width of 10 columns.\n1. [`numComments`] with a width of 3 columns.\n1. [`reviewStatus`] with a width of 3 columns.\n1. [`ci`] with a width of 3 columns.\n1. [`lines`] with a width of 16 columns.\n\n<Aside type=\"caution\" title=\"Watch out!\">\n  Even though the `state`, `title`, `comments`, and `reactions` settings\n  aren't explicitly defined in your configuration file, they're added to\n  the table unless you set their [`hidden`] option to `false`.\n\n[`hidden`]: /configuration/layout/options/#hide-column\n\n</Aside>\n      \n[`updatedAt`]:    #pr-updated-at-column\n[`state`]:        #pr-updated-at-column\n[`repo`]:         #pr-repo-column\n[`title`]:        #pr-title-column\n[`author`]:       #pr-author-column\n[`numComments`]: #pr-number-of-comments-column\n[`reviewStatus`]: #pr-review-status-column\n[`ci`]:           #pr-continuous-integration-column\n[`lines`]:        #pr-lines-column\n\n```yaml\nupdatedAt:\n  width: 7\nrepo:\n  width: 15\ntitle:\n  grow: true\nauthor:\n  width: 15\nassignees:\n  width: 20\n  hidden: true\nbase:\n  width: 15\n  hidden: true\nlines:\n  width: 16\n```\n\n## PR Updated At Column\n\n| Property    | Type | Default                                            |\n| :---------- | :--- | :------------------------------------------------- |\n| `updatedAt` | yaml | <Code code={`width: 7`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays how recently the PR was updated. The entry shows the time elapsed\nsince the last update, like `1h` or `3d`.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-clock\"/>\n\n## PR State Column\n\n| Property | Type | Default                                            |\n| :------- | :--- | :------------------------------------------------- |\n| `state`  | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the PR's state as one of the following icons:\n\n- When a PR is open and ready for review, the icon is <NerdFontIcon icon=\"nf-oct-git_pull_request\"/> and\n  the color is `#42a0fa`.\n- When a PR is in draft mode, the icon is <NerdFontIcon icon=\"nf-oct-git_pull_request_draft\"/> and the color is\n  set to the value of [`theme.colors.text.faint`].\n- When a PR is merged, the icon is <NerdFontIcon icon=\"nf-oct-feed_merged\"/> and the color is `#a371f7`.\n- When a PR is closed without merging, the icon is <NerdFontIcon icon=\"nf-oct-trash\"/> and the\n  color is `#c38080`.\n\nThis heading for this column is <NerdFontIcon icon=\"nf-dev-git_merge\"/>\n\n[`theme.colors.text.faint`]: /configuration/theme#faint-text-color\n\n## PR Repo Column\n\n| Property | Type | Default                                             |\n| :------- | :--- | :-------------------------------------------------- |\n| `repo`   | yaml | <Code code={`width: 15`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the name of the repository the PR is filed in. The entry shows the\nname of the repository without the owner, like `gh-dash` for the\n`https://github.com/dlvhdr/gh-dash` repository.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-repo\"/>\n\n[`width`]: /configuration/layout/options/#column-width\n\n## PR Title Column\n\n| Property | Type | Default                                                         |\n| :------- | :--- | :-------------------------------------------------------------- |\n| `title`  | yaml | <Code code={`width: 15\\ngrow: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the PR's number followed by its title. This column is always displayed\nunless you set [`hidden`] to `false`. By default, it grows to fill the available space\nin the terminal after accounting for other column widths.\n\nThe heading for this column is `Title`.\n\nThe [`theme.colors.text.primary`] setting defines the issue number's color.\n\n[`hidden`]: /configuration/layout/options/#hide-column\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n\n## PR Author Column\n\n| Property | Type | Default                                             |\n| :------- | :--- | :-------------------------------------------------- |\n| `author` | yaml | <Code code={`width: 15`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the username for the person who created the PR.\n\nThe heading for this column is `Author`.\n\n## PR Author Role Icon\n\n| Property     | Type | Default                                            |\n| :----------- | :--- | :------------------------------------------------- |\n| `authorIcon` | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis setting affects display of the role icon for the person who created the PR.\n\n## PR Assignees Column\n\n| Property    | Type | Default                                                           |\n| :---------- | :--- | :---------------------------------------------------------------- |\n| `assignees` | yaml | <Code code={`width: 20\\nhidden: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the usernames for the people assigned to the PR.\n\nThe heading for this column is `Assignees`.\n\n## PR Base Column\n\n| Property | Type | Default                                                           |\n| :------- | :--- | :---------------------------------------------------------------- |\n| `base`   | yaml | <Code code={`width: 15\\nhidden: true`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the base branch the PR is targeting, like `main`.\n\nThe heading for this column is `Base`.\n\n## PR Number of Comments Column\n\n| Property      | Type | Default                                            |\n| :------------ | :--- | :------------------------------------------------- |\n| `numComments` | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the number of comments left on a PR.\nThis is a sum of the direct comments and the number of review threads.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-fa-comments_o\"/>.\n\n[`theme.colors.text.faint`]: /configuration/theme#faint-text-color\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n[`theme.colors.text.warning`]: /configuration/theme#warning-text-color\n\n## PR Review Status Column\n\n| Property       | Type | Default                                            |\n| :------------- | :--- | :------------------------------------------------- |\n| `reviewStatus` | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the review status of a PR as an icon:\n\n- When the PR hasn't been reviewed, the icon is <NerdFontIcon icon=\"nf-fa-clock\" /> and the\n  color is the value of [`theme.colors.text.faint`].\n- When the PR is approved, the icon is <NerdFontIcon icon=\"nf-cod-check\" /> and the color is\n  the value of [`theme.colors.text.primary`].\n- When the PR has requested changes, the icon is <NerdFontIcon icon=\"nf-md-keyboard_return\" /> and the\n  color is the value of [`theme.colors.text.warning`].\n\nThe heading for this column is <NerdFontIcon icon=\"nf-md-account_check_outline\"/>.\n\n[`theme.colors.text.faint`]: /configuration/theme#faint-text-color\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n[`theme.colors.text.warning`]: /configuration/theme#warning-text-color\n\n## PR Continuous Integration Column\n\n| Property | Type | Default                                            |\n| :------- | :--- | :------------------------------------------------- |\n| `ci`     | yaml | <Code code={`width: 3`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the CI status of a PR as an icon:\n\n- When the checks haven't finished running, the icon is <NerdFontIcon icon=\"nf-fa-clock\"/> and\n  the color is the value of [`theme.colors.text.faint`].\n- When the checks have all passed, the icon is <NerdFontIcon icon=\"nf-md-check_circle\"/> and the\n  color is the value of [`theme.colors.text.success`].\n- When at least one check failed, the icon is <NerdFontIcon icon=\"nf-md-close_circle\"/> and the\n  color is the value of [`theme.colors.text.warning`].\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-checklist\"/>\n\n[`theme.colors.text.faint`]: /configuration/theme#faint-text-color\n[`theme.colors.text.primary`]: /configuration/theme#primary-text-color\n[`theme.colors.text.warning`]: /configuration/theme#warning-text-color\n\n# PR Lines Column\n\n| Property | Type | Default                                             |\n| :------- | :--- | :-------------------------------------------------- |\n| `lines`  | yaml | <Code code={`width: 16`} lang=\"yaml\" frame=\"none\"/> |\n\nThis column displays the line changes for a PR. The column represents the changes as\n`<added> / -<removed>`. For example, `66 / -46` indicates 66 lines added and 46\nlines removed.\n\nThe heading for this column is <NerdFontIcon icon=\"nf-oct-diff\"/>.\n"
  },
  {
    "path": "docs/src/content/docs/configuration/notification-section.mdx",
    "content": "---\ntitle: Notification Sections\n---\n\n# Notification Section Options (`notificationsSections`)\n\nDefines sections in the dashboard's Notifications view.\n\n- Every section must define a [`title`] and [`filters`].\n- When you define [`limit`] for a section, that value overrides the\n  [`defaults.notificationsLimit`] setting.\n\n[`title`]: #notification-title-title\n[`filters`]: #notification-filters-filters\n[`limit`]: #notification-fetch-limit-limit\n[`defaults.notificationsLimit`]: /configuration/defaults/#notifications-fetch-limit-notificationslimit\n\n## Search Section\n\nThe Notifications view includes a search section (indicated by a magnifying glass icon) as the first tab. This serves as a scratchpad for one-off searches without modifying your configured sections.\n\n- Default filter: `archived:false`\n- Respects `smartFilteringAtLaunch`: when enabled and running from a git repository, the search automatically scopes to that repo\n- Use the `/` key to focus the search bar and enter custom queries\n\n## Default Sections\n\nBy default, the dashboard includes these notification sections:\n\n```yaml\nnotificationsSections:\n  - title: All\n    filters: \"\"\n  - title: Created\n    filters: \"reason:author\"\n  - title: Participating\n    filters: \"reason:participating\"\n  - title: Mentioned\n    filters: \"reason:mention\"\n  - title: Review Requested\n    filters: \"reason:review-requested\"\n  - title: Assigned\n    filters: \"reason:assign\"\n  - title: Subscribed\n    filters: \"reason:subscribed\"\n  - title: Team Mentioned\n    filters: \"reason:team-mention\"\n```\n\nYou can customize these by defining your own `notificationsSections` in your config file.\n\n## Notification Title (`title`)\n\nThis setting defines the section's name. The dashboard displays this value in the tabs for\nthe Notifications view.\n\n## Notification Filters (`filters`)\n\nThis setting defines the filters for notifications in the section's table. Notification filters differ from PR and Issue filters because they use client-side filtering.\n\n### Available Filters\n\n#### Read State Filters\n\n| Filter | Description |\n|--------|-------------|\n| `is:unread` | Show only unread notifications |\n| `is:read` | Show only read notifications |\n| `is:all` | Show both read and unread notifications |\n| `is:done` | Show archived/done notifications |\n\n#### Reason Filters\n\n| Filter | Description |\n|--------|-------------|\n| `reason:author` | Activity on threads you created |\n| `reason:comment` | Someone commented on a thread you're subscribed to |\n| `reason:mention` | You were @mentioned |\n| `reason:review-requested` | Your review was requested on a PR |\n| `reason:assign` | You were assigned |\n| `reason:subscribed` | Activity on threads you're watching |\n| `reason:team-mention` | Your team was @mentioned |\n| `reason:state-change` | Thread state changed (merged, closed, etc.) |\n| `reason:ci-activity` | CI workflow activity |\n| `reason:participating` | Meta-filter that expands to: author, comment, mention, review-requested, assign, state-change |\n\n#### Repository Filters\n\n| Filter | Description |\n|--------|-------------|\n| `repo:owner/name` | Show notifications only from the specified repository |\n\n### Filter Examples\n\n```yaml\n# Show only notifications where you were mentioned\n- title: Mentioned\n  filters: \"reason:mention\"\n\n# Show unread notifications from a specific repo\n- title: My Project\n  filters: \"is:unread repo:myorg/myproject\"\n\n# Show notifications where you're actively participating\n- title: Participating\n  filters: \"reason:participating\"\n\n# Combine multiple reason filters\n- title: Review & Mentions\n  filters: \"reason:review-requested reason:mention\"\n```\n\n### Filter Behavior\n\n- **Default behavior**: With no filters or empty filters, the section shows all notifications (both read and unread), matching GitHub's default behavior. To show only unread notifications by default, set `includeReadNotifications: false` in your config.\n- **Explicit `is:unread`**: Shows only unread notifications, excluding bookmarked read notifications. This overrides the `includeReadNotifications` setting.\n- **Reason filters**: Applied client-side after fetching from GitHub's API\n\n## Notification Fetch Limit (`limit`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many notifications the dashboard should fetch for the section when:\n\n- The dashboard first loads.\n- You navigate to the next notification in a table without another fetched notification to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\nThis setting overrides the [`defaults.notificationsLimit`] setting.\n\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n[`defaults.notificationsLimit`]: /configuration/defaults/#notifications-fetch-limit-notificationslimit\n"
  },
  {
    "path": "docs/src/content/docs/configuration/pr-section.mdx",
    "content": "---\ntitle: PR Sections\n---\n\n# PR Section Options (`prSections`)\n\nDefines a section in the dashboard's PRs view.\n\n- Every section must define a [`title`] and [`filters`].\n- When you define [`limit`] for a section, that value overrides the\n  [`defaults.prsLimit`] setting.\n- When you define [`layout`] for a section, that value overrides the\n  [`defaults.layout.pr`] setting.\n\n[`title`]: #pr-title-title\n[`filters`]: #pr-filters-filters\n[`limit`]: #pr-fetch-limit-limit\n[`layout`]: #pr-section-layout-layout\n[`defaults.prsLimit`]: /configuration/defaults/#pr-fetch-limit\n[`defaults.layout.pr`]: /configuration/defaults/#layout-options-layout\n\n## PR Title (`title`)\n\nThis setting defines the section's name. The dashboard displays this value in the tabs for\nthe PRs view.\n\n## PR Filters (`filters`)\n\nThis setting defines the [GitHub search filters][01] for the PRs in the section's table.\n\nDon't specify `is:pr` for this setting. The dashboard always adds that filter for PR\nsections.\n\nNote pull requests from archived repositories are excluded by default with `archived:false`.\n\nYou can define any combination of search filters. To make it easier to read and maintain\nyour filters, we recommend using the `>-` syntax after the `filter` key and writing one\nfilter per line.\n\nFor example:\n\n```yaml\n- # Involved\n  filter: >-\n    is:open\n    involves:@me\n    -author:@me\n    updated:>={{ nowModify \"-2w\" }}\n```\n\nFor more information about writing filters for searching GitHub, see [Searching].\n\n[Searching]: /configuration/searching\n\n## PR Section Layout (`layout`)\n\nYou can define how a PR section displays items in its table by setting options for the\navailable columns. You can define a column's width, whether it grows to fill available space,\nand whether the column should be visible at all.\n\nNote that if the length of a column's text exceeds the defined column [`width`], the view\ntruncates the column's text to two characters shorter than the column's width. For example, if\nthe width is `6`, `gh-dash` displays as `gh-d`.\n\nColumn headings have their color defined by the [`theme.colors.text.primary`] setting.\n\n[`width`]: /configuration/layout/options#layout-options-width\n[`theme.colors.text.primary`]: /configuration/theme\n\n## PR Fetch Limit (`limit`)\n\n| Type    | Minimum | Default |\n| :------ | :-----: | :-----: |\n| Integer |    1    |   20    |\n\nThis setting defines how many PRs the dashboard should fetch for the section when:\n\n- The dashboard first loads.\n- The [fetch interval] elapses.\n- You navigate to the next issue in a table without another fetched issue to display.\n- You use the [refresh current section] or [refresh all sections] commands.\n\nThis setting overrides the [`defaults.prsLimit`] setting.\n\n[01]: https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests\n[fetch interval]: /configuration/defaults/#refetch-interval-in-minutes-refetchintervalminutes\n[refresh current section]: /getting-started/keybindings/global/#r---refresh-current-section\n[refresh all sections]: /getting-started/keybindings/global/#r---refresh-all-sections\n[`defaults.prsLimit`]: /configuration/defaults/#pr-fetch-limit\n"
  },
  {
    "path": "docs/src/content/docs/configuration/repo-paths.mdx",
    "content": "---\ntitle: Repo Paths\n---\n\nYou can use the `repoPaths` setting to map repository names (as keys) to local paths\n(as values). This map configures where to locate repositories when checking out PRs.\n\nThe mappings can be exact matches, like the full name or path of a repository, or wildcard\nmatches using the `owner` and a partial path.\n\nAn exact match for the full repository name to a full path takes priority over a matching\nwildcard. Wildcard keys must match to a wildcard path.\n\nThe `RepoName` and `RepoPath` keybinding arguments are fully expanded when sent to the\ncommand.\n\n## Examples\n\n### Matching Repositories\n\n```yaml\nrepoPaths:\n  dlvhdr/*: ~/code/repos/*\n  dlvhdr/gh-dash: ~/code/gh-dash\n```\n\nIn this example, the first key is defined with a wildcard (`*`) as `dlvhdr/*`, so the\ndashboard will use this entry to resolve the path for any repo in the `dlvhdr`\nnamespace, like `dlvhdr/jb` or `dlvhdr/harbor`. Note that the value for this key\nalso uses a wildcard. If the key specifies a wildcard, the value must specify one too.\n\nIf a repository in the `dlvhdr` namespace has been cloned into the `~/code/repos`\nfolder, the dashboard will be able to checkout PRs for that repository locally.\n\nIf the repository isn't found, the checkout command raises an error.\n\nThe second key defines an exact mapping between the `dlvhdr/gh-dash` repository and the\n`~/code/gh-dash` folder. Because this is a non-wildcard mapping, the dashboard will use\nthis value to resolve the repository path for `dlvhdr/gh-dash` even though there's also\nan entry for `dlvhdr/*`.\n\n## Pattern Properties\n\n### With a Wildcard\n\nIf the key for an `repoPath` entry ends with a wildcard (`*`), its value must also have\na wildcard. If a key ends with a wildcard but the value doesn't, `gh-dash` won't be\nable to correctly map repositories to folders.\n\n### Without a Wildcard\n\nIf the key for an `repoPath` entry doesn't have a wildcard (`*`), its value must not\nhave a wildcard. If a key ends without a wildcard but the value does, `gh-dash` won't\nbe able to correctly map repositories to folders.\n"
  },
  {
    "path": "docs/src/content/docs/configuration/reusing.mdx",
    "content": "---\ntitle: Reusing Settings\n---\n\n`DASH` supports defining global settings that will always be applied, and lets you override them with a per-repo or one-time basis.\n\nThis lets you set your [theme](./theme), [keybindings](./keybindings) and any other setting by defining them once.\n\n## The Global Config\n\nThe global config is usually under `$HOME/.config/gh-dash/config.yml` - but that follows the XDG spec. See [How to Configure](/configuration) for more details.\n\nThe global config is loaded first, with the option to override anything it defines.\nHere you'd usually want to define stuff like your theme, keybindings etc.\n\n## Per-Repo / One-Time Overrides\n\n`DASH` supports passing ad-hoc or per-repo config files by:\n\n- Creating a `.gh-dash.yml` file in a git repo's root directory.\n- Passing a path to a `.yml` file you supplied with the `--config` flag or the `GH_DASH_CONFIG` environment variable.\n\nAny settings defined here will override your global config settings.\n\n## Example\n\nYour global config under `~/.config/gh-dash/config.yml` could look like this:\n\n```yaml\npager:\n  diff: diffnav\ntheme:\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      # ...\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: cd {{.RepoPath}} && lazygit\n```\n\nThen in a git repo you could create a `.gh-dash.yml` file defining just the\nsections:\n\n```yaml\nprSections:\n  - title: Bugs\n    filters: is:open author:@me [BUG]\n  - title: Our Packages\n    filters: is:open review-requested:@me repo:work-org/our-pkg\n```\n\nStarting `DASH` from the git repo, the final config used will have the `pager`, `theme` and `keybindings`\nfrom your global config and the `prSections` from your repo's config.\n"
  },
  {
    "path": "docs/src/content/docs/configuration/schema.mdx",
    "content": "---\ntitle: Schema\n---\n\nThe `dash` configuration schema is published here:\n\n[`https://gh-dash.dev/schema.json`][02]\n\n## Using the Schema in Neovim\n\n1. Install the [yaml-language-server](https://github.com/redhat-developer/yaml-language-server) LSP\n2. Follow the guide in [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#yamlls) to set it up\n3. Add the following line to the top of your configuration file:\n\n   ```\n   # yaml-language-server: $schema=https://gh-dash.dev/schema.json\n   ```\n\nWith the directive comment at the top of your configuration or the VS Code settings file, you can\nthen open your configurations and edit them with support for validation. When you hover on an\noption in your configuration file, you'll get a brief synopsis of the option and a link to its\ndocumentation on this site.\n\n## Using the Schema in VS Code\n\nYou can get edit-time feedback, validation, and IntelliSense for your configurations in VS Code by\nfollowing these steps:\n\n1. Install [Red Hat's YAML extension for VS Code][03].\n1. Open your `dash` configuration file.\n1. Add the following line to the top of your configuration file:\n\n   ```\n   # yaml-language-server: $schema=https://gh-dash.dev/schema.json\n   ```\n\n1. Instead of adding a comment to your configuration file, you could create the\n   `.vscode/settings.json` file in your `dash` configuration folder and add this setting:\n\n   ```json\n   {\n     \"yaml.schemas\": {\n       \"https://gh-dash.dev/schema.json\": \"*.yml\"\n     }\n   }\n   ```\n\n[01]: /getting-started/usage#--config\n[02]: /schema.json\n[03]: https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml\n"
  },
  {
    "path": "docs/src/content/docs/configuration/searching.mdx",
    "content": "---\ntitle: Searching\nlinkTitle: >-\n  ![icon:search](lucide)&nbsp;Searching\nsummary: >-\n  How to search and filter issues and prs\nweight: 3\n---\n\n# Searching\n\nSearching for prs and issues is done by defining sections and their filters.\nSearch filters are defined using [GitHub search filters][01].\n\nFor example, this section, shows open PRs authored by anyone but me, which were updated in the last 2 weeks.\n\n```yaml\nprsSections:\n  - title: Review\n    filter: >-\n      is:open\n      -author:@me\n      updated:>={{ nowModify \"-2w\" }}\n```\n\nNote: don't specify `is:pr` for this setting. The dashboard always adds that filter for PR\nsections. Results from archived repositories are excluded by default with `archived:false`.\n\nYou can define any combination of search filters. To make it easier to read and maintain\nyour filters, we recommend using the `>-` syntax after the `filter` key and writing one\nfilter per line.\n\nFor more information about writing filters for searching GitHub, see [Searching issues and pull requests][02].\n\n## Search Templates\n\nIn addition to GitHub's filters, gh-dash adds templating functions.\n\n### `nowModify`\n\nThe `nowModify` function helps you calculate relative dates in the ISO-8601 format (which is what GitHub expects).\n\nGiven the date today is 2025-02-02, a search filter of `updated:>={{ nowModify \"-1mo\" }}` will output `updated:>=2025-01-02`.\n\nA duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as `1w`, `-8h` or `1mo2w`.\n\nThe available units are:\n\n- [Go's builtin durations](https://pkg.go.dev/time#ParseDuration) - `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`\n- Additionally:\n  - `d`/`D` for days\n  - `w`/`W` for weeks\n  - `M`/`mo` for months\n  - `y`/`Y` for years\n\n## Smart Filtering\n\nBy default, if the directory you launch `dash` from is a clone of a remote GitHub repo (or if you\nhave the `GH_REPO` environment variable set to a particular remote), then for any of your PR\nsections and issue sections with `filters` values in your [configuration](/configuration) that don’t\nhave an explicit `repo:` field, `dash` adds a `repo:<RepoName>` field to the search-bar value for\nthem (where _`<RepoName>`_ is the name of the remote repo).\n\nThat is, `dash` further filters those sections down to only the PRs/issues for the GitHub\nrepo name specified in your `GH_REPO` environment variable — or else the repo name of the remote\ntracked by the clone directory from which `dash` launched.\n\nFor that, `dash` first checks and uses the repo name in the `GH_REPO` environment variable (if\nyou have that set). If `dash` doesn’t find that, then it next checks for the value of the remote\nrepo name tracked by the clone directory from which you launched `dash` — by looking through all\nGitHub remotes configured for that clone in the following order:\n\n1. `upstream`\n2. `github`\n3. `origin`\n\n…and, otherwise, if `dash` finds no remotes with any of those names, then it uses the repo name\nfor the first remote in the output that `git remote` shows.\n\nTo disable Smart Filtering at launch, set `smartFilteringAtLaunch` to `false` in your [configuration](/configuration).\n\n```yaml\nsmartFilteringAtLaunch: false\n```\n\nTo toggle Smart Filtering on or off for the current section you’re currently viewing, either use the\n`t` key — or else use whatever custom keybinding you have set for the `togglesearch` builtin in the\n`keybindings` section of your [configuration](/configuration).\n\nYou can also manually edit the search bar (press `/`) to remove or replace the `repo:` filter, then\npress Enter. The Smart Filtering state automatically syncs to match your edit — so if you remove the\n`repo:` filter from the search bar, Smart Filtering turns off for that section, and vice versa.\n\n[01]: https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests\n[02]: https://docs.github.com/en/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax\n"
  },
  {
    "path": "docs/src/content/docs/configuration/theme.mdx",
    "content": "---\ntitle: Theme\n---\n\nimport { Aside } from \"@astrojs/starlight/components\";\n\n# Theme Options\n\nThis setting defines the dashboard's theme. It only effects the presentation of the dashboard,\nnot the data. Currently, the theme only defines colors and icons. To control how table columns\nand preview pane display for the views, use the [`defaults`], [`prSections`], and\n[`issueSections`] settings.\n\nTo define any color for your dashboard, you **must** define **every** color. All properties are\nrequired properties. Every color for the dashboard's theme must be a valid [hex color] like\n`#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n\nTo find hex colors to use in your dashboard, visit [`color-hex.com`]. You can browse colors,\ninspect a given color, get alternate shades and tints for a color, derive a color palette, and\nmore.\n\n[`defaults`]: /configuration/defaults\n[`prSections`]: /configuration/pr-section\n[`issueSections`]: /configuration/issue-section\n[hex color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color\n[`color-hex.com`]: https://www.color-hex.com/\n\n## Defaults\n\n```yaml\nui:\n  sectionsShowCount: true\ntable:\n  showSeparators: true\n  compact: false\ncolors:\n  text:\n    primary: \"#ffffff\"\n    secondary: \"#c6c6c6\"\n    inverted: \"#303030\"\n    faint: \"#8a8a8a\"\n    warning: \"#800000\"\n    success: \"#008000\"\n    actor: \"#c6c6c6\"\n  background:\n    selected: \"#808080\"\n  border:\n    primary: \"#808080\"\n    secondary: \"#c0c0c0\"\n    faint: \"#000000\"\n  inline:\n    icons:\n      newcontributor: \"077\"\n      contributor: \"075\"\n      collaborator: \"178\"\n      member: \"178\"\n      owner: \"178\"\n      unknownrole: \"178\"\nicons:\n  inline:\n    newcontributor: \"󰎔\"\n    contributor: \"\"\n    collaborator: \"\"\n    member: \"\"\n    owner: \"\"\n    unknownrole: \"󰭙\"\n```\n\n## UI Settings (`ui`)\n\n### Sections Show Count\n\n| Property            | Type    | default |\n| :------------------ | :------ | :------ |\n| `sectionsShowCount` | boolean | true    |\n\nWhether the number of results show up next to each section's title in the tab bar.\n\n### Table Settings (`table`)\n\n#### Show Separators\n\n| Property         | Type    | default |\n| :--------------- | :------ | :------ |\n| `showSeparators` | boolean | true    |\n\nWhether to show the separators between lines in the prs/issues tables.\n\n#### Compact\n\n| Property  | Type    | default |\n| :-------- | :------ | :------ |\n| `compact` | boolean | false   |\n\nWhether to show table rows in a compact way or not\n\n## Theme Colors (`colors`)\n\nThis setting defines a map of colors for the dashboard's text, background, and border\ncolors.\n\nThe following elements can't be styled through your configuration and have their colors\nset as:\n\n| Element                                 |          Color           |\n| :-------------------------------------- | :----------------------: |\n| Search input terms when inactive        | Terminal default (faint) |\n| Search input terms when active          |     Terminal default     |\n| Inactive section names in the tab list  |     Terminal default     |\n| The status icon for open issues and PRs |        `#42A0FA`         |\n| The status icon for closed issues       |        `#C38080`         |\n| The status icon for closed PRs          |        `#C38080`         |\n| The status icon for merged PRs          |        `#A371F7`         |\n\nRequired:\n\n- text\n- background\n- border\n\n### Text Colors (`text`)\n\nDefines the foreground (text) colors for the dashboard.\n\n#### Primary Text Color\n\n| Property  | Type | default                                   |\n| :-------- | :--- | :---------------------------------------- |\n| `primary` | color | `#ffffff` for dark or `#000000` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The active section's name in the tab list\n- The active view's name\n- The column headers for the section's table of work items\n- Open work item entries in the table except when a column's icon has an alternate\n  color.\n- The keybindings in the help view\n- The title of the work item in the preview pane heading\n- The comments and checks headers in the preview pane.\n- The username for comment authors in the preview pane.\n\n#### Secondary Text Color\n\n| Property    | Type | default                                   |\n| :---------- | :--- | :---------------------------------------- |\n| `secondary` | color | `#c6c6c6` for dark or `#808080` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The search icon, `is:pr`, and `is:issue` components of the search bar\n- The inactive view's name\n- The work item number in the table entries\n- The work item number and repository name in the preview pane heading\n- The base and target branch in the preview pane for PRs\n\n#### Inverted Text Color\n\n| Property   | Type | default                                   |\n| :--------- | :--- | :---------------------------------------- |\n| `inverted` | color | `#303030` for dark or `#ffffff` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The work item status in the preview pane\n- Work item labels\n\n#### Faint Text Color\n\n| Property | Type | default                                   |\n| :------- | :--- | :---------------------------------------- |\n| `faint`  | color | `#8a8a8a` for dark or `#c0c0c0` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- Closed work item entries in the table\n- The current time, active/total work item count, and fetched work item count\n  beneath the table\n- The help text for the keybinding commands\n- The percentage scrolled at the bottom of the preview pane\n- The date/time information on comments in the preview pane\n- The review status icon when a PR is waiting for a review\n\n#### Warning Text Color\n\n| Property  | Type | default                                   |\n| :-------- | :--- | :---------------------------------------- |\n| `warning` | color | `#800000` for dark or `#800000` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The icon for the `reviewStatus` column's icon when a PR has requested changes\n- The icon for the `ci` column's icon when a PR has failing checks\n- The icon for failing checks for PRs in the preview pane\n- Error messages for commands, like when the dashboard fails to fetch work items.\n\n#### Success Text Color\n\n| Property  | Type | default                                  |\n| :-------- | :--- | :--------------------------------------- |\n| `success` | color | `#008000` for dark or `008000` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The icon for the `reviewStatus` column's icon when a PR is approved\n- The icon for the `ci` column's icon when a PR's checks are all passing\n- The icon for passing checks for PRs in the preview pane\n- Success messages for commands, like when the dashboard fetches work items.\n\n#### Actor Text Color\n\n| Property | Type | default                                   |\n| :------- | :--- | :---------------------------------------- |\n| `actor`  | color | `#c6c6c6` for dark or `#808080` for light |\n\nThis setting determines the color of the text for the following elements in the\ndashboard UI:\n\n- The username of the person who triggered a notification, displayed after the\n  notification title in the notifications view\n\n### Background Colors (`background`)\n\nDefines the background colors for the dashboard. By default, the background color for\nall elements in the dashboard UI is the terminal's background color.\n\nRequired:\n\n- selected\n\n#### Selected Background Color\n\n| Property   | Type | default                                   |\n| :--------- | :--- | :---------------------------------------- |\n| `selected` | color | `#808080` for dark or `#c0c0c0` for light |\n\nThis setting determines the background color for the following elements in the\ndashboard UI:\n\n- The active section's name in the tab list\n- The active view's name\n- The active entry in the section's work item table.\n\n### Border Colors (`border`)\n\n| Property | Type | default                                   |\n| :------- | :--- | :---------------------------------------- |\n| `border` | color | `#808080` for dark or `#c0c0c0` for light |\n\nDefines the border colors for the dashboard.\n\nRequired:\n\n- primary\n- secondary\n- faint\n\n#### Primary Border Color\n\n| Property  | Type | default                                   |\n| :-------- | :--- | :---------------------------------------- |\n| `primary` | color | `#808080` for dark or `#ff00ff` for light |\n\nThis setting determines the color for the following elements in the dashboard UI:\n\n- The border beneath the section tabs\n- The border around the search input\n- The border between the table and the preview pane\n- The border above the command help info\n\n#### Secondary Border Color\n\n| Property    | Type | default                                   |\n| :---------- | :--- | :---------------------------------------- |\n| `secondary` | color | `#c0c0c0` for dark or `#808080` for light |\n\nThis setting determines the color for the following elements in the dashboard UI:\n\n- The borders that separate the sections in the tab list\n\n#### Faint Border Color\n\n| Property | Type | default                                   |\n| :------- | :--- | :---------------------------------------- |\n| `faint`  | color | `#000000` for dark or `#e4e4e4` for light |\n\nThis setting determines the color for the following elements in the dashboard UI:\n\n- The border between rows in the table\n\n### Icon Colors (`inline.icons`)\n\nDefines author-role icon colors for the dashboard.\n\n#### New Contributor Role Icon Color\n\n`newcontributor`\n| Property | Type | default |\n| :-------- | :--- | :---------------------------------------- |\n| `newcontributor` | color | |\n\nSpecifies the icon color for the new-contributor-role icon.\n\n#### Contributor Role Icon Color\n\n| Property      | Type | default |\n| :------------ | :--- | :------ |\n| `contributor` | color |         |\n\nSpecifies the icon color for the contributor-role icon.\n\n#### Collaborator Role Icon Color\n\ncollaborator:\n| Property | Type | default |\n| :-------- | :--- | :---------------------------------------- |\n| `collaborator` | color | |\n\nSpecifies the icon color for the collaborator-role icon.\n\n#### Member Role Icon Color\n\n| Property | Type | default |\n| :------- | :--- | :------ |\n| `member` | color |         |\n\nSpecifies the icon color for the member-role icon.\n\n#### Owner Role Icon Color\n\nSpecifies the icon color for the owner-role icon.\n\n#### Unknown Role Icon Color\n\n| Property  | Type | default |\n| :-------- | :--- | :------ |\n| `unknown` | color |         |\n\nSpecifies the icon color for the unknown-role icon.\n\n## Icons (`icons.inline`)\n\nThis setting defines a map of author-role icons for the dashboard.\n\n### New Contributor Role Icon\n\nSpecifies the character to use as the new-contributor-role icon.\n\n| Property         | Type   | default |\n| :--------------- | :----- | :------ |\n| `newcontributor` | string | 󰎔       |\n\n### Contributor Role Icon Color\n\nSpecifies the character to use as the contributor-role icon.\n\n| Property      | Type   | default |\n| :------------ | :----- | :------ |\n| `contributor` | string |        |\n\n### Collaborator Role Icon Color\n\nSpecifies the character to use as the collaborator-role icon.\n\n| Property       | Type   | default |\n| :------------- | :----- | :------ |\n| `collaborator` | string |        |\n\n### Member Role Icon Color\n\nSpecifies the character to use as the member-role icon.\n\n| Property | Type   | default |\n| :------- | :----- | :------ |\n| `member` | string |        |\n\n### Owner Role Icon Color\n\nSpecifies the character to use as the owner-role icon.\n\n| Property | Type   | default |\n| :------- | :----- | :------ |\n| `owner`  | string |        |\n\n### Unknown Role Icon Color\n\nSpecifies the character to use as the unknown-role icon.\n\n| Property      | Type   | default |\n| :------------ | :----- | :------ |\n| `unknownrole` | string | 󰭙       |\n"
  },
  {
    "path": "docs/src/content/docs/contributing/index.mdx",
    "content": "---\ntitle: Contributing\n---\n\nThank you for investing your time in contributing to our project!\n\nIn this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.\n\n## The Critical Rule\n\n- The most important rule: you must understand your code. If you can't explain what your changes do and how they interact with the greater system without the aid of AI tools, do not contribute to this project.\n- The second most important rule: when you submit a PR you must be willing to address comments and maintain this code. Dot not submit drive-by PRs that solve your own issue without the willingness to iterate on it. Keep these in your own fork.\n- Using AI to write code is fine. You can gain understanding by interrogating an agent with access to the codebase until you grasp all edge cases and effects of your changes. What's not fine is submitting agent-generated slop without that understanding. Be sure to read the [AI Usage Policy](https://github.com/dlvhdr/gh-dash/blob/main/AI_POLICY.md).\n\n## AI Usage\n\nThe project has strict rules for AI usage. Please see the [AI Usage Policy](https://github.com/dlvhdr/gh-dash/blob/main/AI_POLICY.md). This is very important.\n\n## Quick Guide\n\n### I Have an Idea for a Feature\n\nLike bug reports, first search through both issues and discussions and try to find if your feature has already been requested. Otherwise, open a discussion in the [\"Feature Requests, Ideas\"](https://github.com/dlvhdr/gh-dash/issues/new?template=feature_request.md) category.\n\n### I've Implemented a Feature\n\n- If there is an issue for the feature, open a pull request straight away.\n- If there is no issue, open a discussion and link to your branch.\n- If you want to live dangerously, open a pull request and hope for the best.\n\n### I Have a Question Which Is Neither a Bug Report nor a Feature Request\n\nOpen a [Q&A discussion](https://github.com/dlvhdr/gh-dash/discussions/categories/q-a), or join our [Discord Server](https://discord.gg/SXNXp9NctV) and ask away in the #help forum channel.\n\n## Working on the Code\n\n### Installing Required Tooling\n\nOur project uses [Devbox](https://github.com/jetpack-io/devbox) to manage its development environment.\n\nUsing Devbox will get your dev environment up and running easily and make sure we're all using the same tools with the same versions.\n\n- Clone this repo\n\n```sh\ngit clone git@github.com:dlvhdr/gh-dash.git && cd gh-dash\n```\n\n- Install `devbox`\n\n```sh\ncurl -fsSL https://get.jetpack.io/devbox | bash\n```\n\n- Start the `devbox` shell and run the setup (will take a while on first time)\n\n```sh\ndevbox shell\n```\n\n_This will create a shell where all required tools are installed._\n\n- _(Optional)_ Set up `direnv` so `devbox shell` runs automatically\n  - [direnv](https://www.jetify.com/devbox/docs/ide_configuration/direnv/) is a tool that allows setting unique environment variables per directory in your filesystem.\n    - Install `direnv` with: `brew install direnv`\n    - Add the following line at the end of the `~/.bashrc` file: `eval \"$(direnv hook bash)\"`\n      - See [direnv's installation instructions](https://direnv.net/docs/hook.html) for other shells.\n    - Enable `direnv` by running `direnv allow`\n- _(Optional)_ Install the VSCode Extension\n  - Follow [this guide](https://www.jetify.com/devbox/docs/ide_configuration/vscode/) to set up VSCode to automatically run `devbox shell`.\n\n#### Troubleshooting\n\n- delete the `.devbox` directory at the project's root\n\n### Navigating the Codebase\n\nTo navigate our codebase with confidence, familiarize yourself with:\n\n- [Bubbletea](https://github.com/charmbracelet/bubbletea) - the TUI framework we're using\n- [The Elm architecture](https://guide.elm-lang.org/architecture/)\n- [charmbracelet/glow](https://github.com/charmbracelet/glow) - for parsing and presenting Markdown\n\n#### Code Structure\n\n- `ui/` - this is the code that's responsible for rendering the different parts of the TUI\n- `data/` - the code that fetches data from GitHub's GraphQL API\n- `config/` - code to parse the user's `config.yml` file\n- `utils/` - various utilities\n\n### Debugging\n\n- Write to the log by using Charm's `log` package\n- Tail the log by running `task logs`\n- Run `dash` in debug mode with `task debug` in another terminal window / pane\n\n```go\nimport \"charm.land/log/v2\"\n\n// more code...\n\nlog.Debug(\"Some message\", \"someVariable\", someVariable)\n```\n\n### Running the Docs Locally\n\n- Run the docs site by running `task docs`\n\n* Go to `localhost:4321` to view them\n"
  },
  {
    "path": "docs/src/content/docs/donating/index.mdx",
    "content": "---\ntitle: Donating ❤️\n---\n\nimport { Aside } from \"@astrojs/starlight/components\";\nimport Sponsorship from \"../../../components/Sponsorship.astro\";\n\nDonations are the primary way to support me in maintaining these projects.\nIf you enjoy my work and want to help, consider supporting me with a donation!\n\nI'm also trying out a Sponsorware model where you can support me by joining the <a href=\"../insiders\">Insiders</a> program to get early access features and apps.\n\n## Goal\n\n<div class=\"m-auto mt-12 flex flex-col gap-2 text-center md:w-full lg:w-1/2\">\n  <p>This is my current sponsorship goal</p>\n  <Sponsorship server:defer />\n</div>\n\nReaching this goal would help me spend more time on my projects and hopefully 🤞🏽\nbecome a full time OSS maintainer one day.\n\n_This is my dream_, to build projects sponsored by individuals with the sole focus on its users - no investors, no line go\nup.\n\n## How to Donate?\n\nTo become a sponsor go to:\n\n<iframe\n  src=\"https://github.com/sponsors/dlvhdr/card\"\n  title=\"Sponsor dlvhdr\"\n  height=\"120\"\n  width=\"100%\"\n  class=\"h-[200px] lg:h-[120px]\"\n></iframe>\n\nThank you very much! ❤️\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/index.mdx",
    "content": "---\ntitle: Installation\n---\n\nGet started using `dash` to review and manage your GitHub work items.\n\n## Recommended Steps\n\n1. Install the `gh` CLI\n\n   ```bash\n   brew install gh # e.g. if on macOS\n   ```\n\n   Or, see the [installation instructions][01] for other platforms.\n\n2. Install this extension:\n\n   ```sh\n   gh extension install dlvhdr/gh-dash\n   ```\n\n3. To get the icons to render properly, you should download and install a [Nerd font][02]. Then,\n   select that font as your font for your terminal of choice.\n\n   ```bash\n    brew install --cask font-fira-code-nerd-font\n   ```\n\n---\n\n<details>\n<summary>How do I get these exact colors and font?</summary>\nThe screenshots in this documentation use [Ghostty][n01] with the\n[tokyonight theme][n02] and the [Fira Code][n03] Nerd Font. For the full setup,\nsee [these dotfiles][n04].\n\n[n01]: https://ghostty.org/\n[n02]: https://github.com/folke/tokyonight.nvim\n[n03]: https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/FiraCode\n[n04]: https://github.com/dlvhdr/dotfiles\n\n</details>\n\n---\n\n## Manual Steps\n\nIf you want to install this extension **manually**, follow these steps:\n\n1. Clone the repo\n\n   ```bash\n   # git\n   git clone https://github.com/dlvhdr/gh-dash\n\n   # GitHub CLI\n   gh repo clone dlvhdr/gh-dash\n   ```\n\n2. `cd` into it\n\n   ```bash\n   cd gh-dash\n   ```\n\n3. Install it locally\n\n   ```bash\n   gh extension install .\n   ```\n\n[01]: https://github.com/cli/cli#installation\n[02]: https://www.nerdfonts.com/\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/global.mdx",
    "content": "---\ntitle: Global\nlinkTitle: >-\n  ![icon:globe](lucide)&nbsp;Global\nweight: 1\nsummary: >-\n  Lists the default keybindings for controlling the dashboard globally.\n---\n\nThis section lists the default keybindings for controlling the dashboard globally. These are\navailable in both the PRs and Issues views.\n\n## `?` - Toggle Help\n\nPress <kbd>?</kbd> to toggle the help menu in the UI. The help menu lists the available\nkeybindings for the current context.\n\n## `/` - Search\n\nPress <kbd>/</kbd> to focus on the dashboard's search input box. When you move the focus to the\nsearch input box you can edit the current section's GitHub search criteria. To refresh the section\nwith your updated query, press <kbd>Enter</kbd>. After the dashboard updates, focus is returned to\nthe active section.\n\nAny changes you make to the search query for a section aren't persistent. If you close the\ndashboard and reopen it, the dashboard displays the sections with the queries defined in your\n[configuration file](/configuration/). To make persistent changes to your sections\nor add a new section, update your configuration.\n\n## `r` - Refresh Current Section\n\nPress <kbd>r</kbd> to refresh the current section's work items. When you do, the dashboard reruns\nthe defined query for the section and displays the returned work items.\n\n## `R` - Refresh All Sections\n\nPress <kbd>R</kbd> to refresh every section in the dashboard's current view. When you do, the\ndashboard reruns the defined query for every section and displays the returned work items for the\ncurrent section. When you navigate to another section, it displays the updated work items for that\nsection.\n\n## `s` - Switch View\n\nPress the <kbd>s</kbd> key to switch the dashboard from the PRs view to the Issues view or the\nIssues view to the PRs view. The first time you switch to a view in your dashboard, the dashboard\nruns the defined query for every section in that view.\n\n## `q` - Quit\n\nPress the <kbd>q</kbd> key to quit the dashboard and return to your normal terminal view.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/index.mdx",
    "content": "---\ntitle: Overview\nweight: 3\nsummary: >-\n  Get started using key presses to interact with the dashboard.\n---\n\nimport { LinkCard, CardGrid } from \"@astrojs/starlight/components\";\n\nWhen you use `dash` to display a dashboard for your GitHub work items, you can interact with the\ndashboard using key combinations.\n\nThis section lists the default keybindings for the dashboard's commands and what they do. Most of\nthe commands are universal across the dashboard's views. There are also commands that are specific\nto the [PRs][01] and [Issues][02] views.\n\nYou can also define your own custom keybindings with the `keybindings` setting in your dashboard's\n[configuration file][03].\n\n<CardGrid>\n  <LinkCard\n    title=\"Global\"\n    href=\"./global\"\n    description=\"Lists the default keybindings for controlling the dashboard globally.\"\n  />\n  <LinkCard\n    title=\"Selected Item\"\n    href=\"./selected-item\"\n    description=\"Lists the default keybindings for interacting with active items in the dashboard in any view.\"\n  />\n  <LinkCard\n    title=\"Selected PR\"\n    href=\"./selected-pr\"\n    description=\"Lists the default keybindings for interacting with an actively selected item in the PRs view for the dashboard.\"\n  />\n  <LinkCard\n    title=\"Selected Issue\"\n    href=\"./selected-issue\"\n    description=\"Lists the default keybindings for interacting with an actively selected item in the Issues view for the dashboard.\"\n  />\n  <LinkCard\n    title=\"Preview Pane\"\n    href=\"./preview\"\n    description=\"Lists the default keybindings for interacting with the preview pane in the Dashboard.\"\n  />\n</CardGrid>\n\n[01]: ./selected-pr\n[02]: ./selected-issue\n[03]: /configuration/\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/navigation.mdx",
    "content": "---\ntitle: Navigation\nlinkTitle: >-\n  ![icon:navigation](lucide)&nbsp;Navigation\nweight: 2\nsummary: >-\n  Lists the default keybindings for navigating the dashboard.\n---\n\n## `↑/k` - Move Up\n\nPress <kbd>↑</kbd> or <kbd>k</kbd> to move to the previous work item in the current section.\n\n## `↓/j` - Move Down\n\nPress <kbd>↓</kbd> or <kbd>j</kbd> to move to the next work item in the current section.\n\n## `←/h` - Previous Section\n\nPress <kbd>←</kbd> or <kbd>h</kbd> to move to the previous section in the current view.\n\n## `→/l` - Next Section\n\nPress <kbd>→</kbd> or <kbd>l</kbd> to move to the next section in the current view.\n\n## `g/home` - First Item\n\nPress <kbd>g</kbd> or <kbd>Home</kbd> to move to the first work item in the current section.\n\n## `G/end` - Last Item\n\nPress <kbd>G</kbd> or <kbd>End</kbd> to move to the last work item in the current section.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/preview.mdx",
    "content": "---\ntitle: Preview Pane\nlinkTitle: >-\n  ![icon:view](lucide)&nbsp;Preview Pane\nweight: 6\nsummary: >-\n  Lists the default keybindings for interacting with the preview pane in the Dashboard.\n---\n\n## `p` - Toggle Preview Pane\n\nPress <kbd>p</kbd> to open the preview pane for the selected work item if it's hidden or hide the\npreview pane if it's visible.\n\n## `ctrl+d` - Preview Page Down\n\nPress <kbd>Ctrl</kbd>+<kbd>d</kbd> to shift the view for the preview pane down one step. The first line in\nthe updated view is always the line after the last line of the previous view.\n\n## `ctrl+u` - Preview Page Up\n\nPress <kbd>Ctrl</kbd>+<kbd>u</kbd> to shift the view for the preview pane up one step. The last line in the\nupdated view is always the line before the first line of the previous view.\n\n## `[` - Next Preview Tab\n\nPress <kbd>[</kbd> to move to the next tab in the preview sidebar, if one exists.\n\n## `]` - Previous Preview Tab\n\nPress <kbd>]</kbd> to move to the previous tab in the preview sidebar, if one exists.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/selected-issue.mdx",
    "content": "---\ntitle: Selected Issue\nlinkTitle: >-\n  ![icon:circle-dot](lucide)&nbsp;Selected Issue\nweight: 4\nsummary: >-\n  Lists the default keybindings for interacting with an actively selected item\n  in the Issues view for the dashboard.\n---\n\nimport { Aside } from \"@astrojs/starlight/components\";\n\n## `a` - Assign Issue\n\nPress <kbd>a</kbd> to assign one or more users to the issue. When you do, the dashboard opens the\npreview pane and displays a new input.\n\nWhen the unassign input is active, you can specify one or more GitHub usernames to assign to the\nissue. By default, the input includes your username if you're not already assigned. If you're\nalready assigned, the input is empty by default.\n\nTo assign more than one user to the issue, specify additional users after one or more whitespace\ncharacters, like a space, tab, or newline. We recommend separating the additional users with a\nnewline by pressing <kbd>Enter</kbd> after each username.\n\nTo submit the list of users to assign to the issue, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the\nchange instead, press <kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `A` - Unassign Issue\n\nPress <kbd>A</kbd> to unassign one or more users from the issue. When you do, the dashboard opens\nthe preview pane and displays a new input.\n\nWhen the unassign input is active, you can specify one or more GitHub usernames to unassign from\nthe issue. By default, the input includes all assigned users separated by newlines.\n\nMake sure the list of users to unassign only includes the users you want to unassign before you\nsubmit the list.\n\nTo submit the list of users to unassign from the issue, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the\nchange instead, press <kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `c` - Comment on Issue\n\nPress <kbd>c</kbd> to add a comment to the issue. When you do, the dashboard opens a preview pane and\ndisplays a new input.\n\nYou can write your comment as GitHub-flavored Markdown in the input.\n\nTo submit the comment on the issue, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the comment instead, press\n\n<kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `x` - Close Issue\n\nPress <kbd>x</kbd> to close the issue. When you do, the dashboard uses the `gh issue close` command\nto close the issue.\n\n<Aside type=\"caution\" title=\"Watch out!\">\n**Prior to v3.10.0:** When you use this command, the dashboard closes the issue immediately and\nwithout prompting for confirmation. Only use this command when you're sure you\nwant to close the issue.\n\n**Since v3.10.0:** When you use this command, the dashboard displays a confirmation prompt and\ncloses the issue only after you approve the action.\n\nThis command doesn't support closing the issue with a comment. If you want to\nadd a comment that explains why you're closing the issue, use the\n[comment](#c---comment-on-issue) command before or after you use this one.\n\n</Aside>\n\n## `X` - Reopen Issue\n\nPress <kbd>X</kbd> to reopen a closed issue. When you do, the dashboard uses the `gh issue reopen`\ncommand to reopen the issue.\n\n<Aside type=\"caution\" title=\"Watch out!\">\n**Prior to v3.10.0:** When you use this command, the dashboard reopens the issue immediately and\nwithout prompting for confirmation. Only use this command when you're sure you\nwant to reopen the closed issue.\n\n**Since v3.10.0:** When you use this command, the dashboard displays a confirmation prompt and\nreopens the issue only after you approve the action.\n\n</Aside>\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/selected-item.mdx",
    "content": "---\ntitle: Selected Item\nweight: 3\nsummary: >-\n  Lists the default keybindings for interacting with active items in the dashboard in any view.\n---\n\n## `o` - Open in GitHub\n\nPress <kbd>o</kbd> to open the selected item on GitHub in your default web browser.\n\n## `y` - Copy Number\n\nPress <kbd>y</kbd> to copy the selected item's issue or PR number without the `#` prefix.\n\n## `Y` - Copy URL\n\nPress <kbd>Y</kbd> to copy the URL to the selected item on GitHub.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/selected-notification.mdx",
    "content": "---\ntitle: Selected Notification\nweight: 5\n---\n\n## Key Bindings\n\n| Key   | Action                                             |\n| ----- | -------------------------------------------------- |\n| D     | Mark as done (removes from inbox)                  |\n| Alt+d | Mark all as done                                   |\n| m     | Mark as read                                       |\n| M     | Mark all as read                                   |\n| u     | Unsubscribe from thread                            |\n| b     | Toggle bookmark                                    |\n| t     | Toggle smart filtering (filter to current repo)    |\n| y     | Copy PR/Issue number                               |\n| Y     | Copy URL                                           |\n| S     | Sort by repository                                 |\n| s     | Switch to PRs view                                 |\n| o     | Open in browser                                    |\n| Enter | View notification (fetches content, marks as read) |\n\n### PR/Issue Keybindings in Notifications View\n\nWhen viewing a PR notification in the preview pane, all PR-specific keybindings become available:\n\n| Key     | Action                  |\n| ------- | ----------------------- |\n| v       | Approve PR              |\n| a       | Assign                  |\n| A       | Unassign                |\n| c       | Comment                 |\n| d       | View diff               |\n| C/Space | Checkout branch         |\n| x       | Close PR                |\n| X       | Reopen PR               |\n| W       | Mark ready for review   |\n| m       | Merge PR                |\n| u       | Update from base branch |\n| w       | Watch checks            |\n| [       | Previous sidebar tab    |\n| ]       | Next sidebar tab        |\n| e       | Expand description      |\n\nSimilarly, when viewing an Issue notification, Issue-specific keybindings are available:\n\n| Key | Action            |\n| --- | ----------------- |\n| L   | Add/remove labels |\n| a   | Assign            |\n| A   | Unassign          |\n| c   | Comment           |\n| x   | Close issue       |\n| X   | Reopen issue      |\n\nThe `?` help display dynamically updates to show the applicable keybindings based on what type of notification content is being viewed.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/keybindings/selected-pr.mdx",
    "content": "---\ntitle: Selected PR\nweight: 5\nsummary: >-\n  Lists the default keybindings for interacting with an actively selected item\n  in the PRs view for the dashboard.\n---\n\nimport { Aside } from \"@astrojs/starlight/components\";\n\n## `a` - Assign PR\n\nPress <kbd>a</kbd> to assign one or more users to the PR. When you do, the dashboard opens the\npreview pane and displays a new input.\n\nWhen the unassign input is active, you can specify one or more GitHub usernames to assign to the\nPR. By default, the input includes your username if you're not already assigned. If you're already\nassigned, the input is empty by default.\n\nTo assign more than one user to the PR, specify additional users after one or more whitespace\ncharacters, like a space, tab, or newline. We recommend separating the additional users with a\nnewline by pressing <kbd>Enter</kbd> after each username.\n\nTo submit the list of users to assign to the PR, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the\nchange instead, press <kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `A` - Unassign PR\n\nPress <kbd>A</kbd> to unassign one or more users from the PR. When you do, the dashboard opens the\npreview pane and displays a new input.\n\nWhen the unassign input is active, you can specify one or more GitHub usernames to unassign from\nthe PR. By default, the input includes all assigned users separated by newlines.\n\nMake sure the list of users to unassign only includes the users you want to unassign before you\nsubmit the list.\n\nTo submit the list of users to unassign from the PR, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the\nchange instead, press <kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `c` - Comment on PR\n\nPress <kbd>c</kbd> to add a comment to the PR. When you do, the dashboard opens a preview pane and\ndisplays a new input.\n\nYou can write your comment as GitHub-flavored Markdown in the input.\n\nTo submit the comment on the PR, press <kbd>Ctrl</kbd>+<kbd>d</kbd>. To cancel the comment instead, press <kbd>Ctrl</kbd>+<kbd>c</kbd> or <kbd>Esc</kbd>.\n\n## `C` - Checkout PR\n\nPress <kbd>C</kbd> to checkout the PR locally. The dashboard checks for the `repoPaths` key in your\nconfiguration to find the repository on your local filesystem.\n\nThe dashboard errors if you haven't defined `repoPaths` in your configuration or if the dashboard\ncan't determine where the repository for this PR is located using that setting.\n\nIf the dashboard is able to locate the repository for the PR on your local filesystem, it uses the\n`gh pr checkout` command to checkout the PR locally.\n\n## `d` - View PR Diff\n\nPress <kbd>d</kbd> to display the PRs diff in the terminal. The dashboard uses the `pager.diff`\nsetting in your configuration, which defaults to `less`, to display the diff.\n\nThe dashboard view is replaced by PRs change diff displayed with the configured pager. When you\nexit the pager, the view returns to the dashboard.\n\n## `e` - Expand Description\n\nPress <kbd>e</kbd> to display the full description for the PR.\nBy default `dash` only displays the first 5 lines.\n\n## `m` - Merge PR\n\nPress <kbd>m</kbd> to merge the PR. When you do, the dashboard uses the `gh pr merge` command to\nmerge the PR.\n\n## `u` - Update PR\n\nPress <kbd>u</kbd> to update the PR branch. When you do, the dashboard uses the\n`gh pr update-branch` command to update the PR. This command updates the branch with a merge commit.\n\n## `v` - Approve PR\n\nPress <kbd>v</kbd> to approve the PR. When you do, the dashboard uses the\n`gh pr review --approve` command to approve the PR. This will prompt you to add an optional comment to the approval. The comment prompt will be prefilled with\n`defaults.prApproveComment` if it is set in your configuration, which defaults to \"LGTM\".\n\n## `w` - Watch PR checks\n\nPress <kbd>w</kbd> to watch the PR check and get a desktop notification if they succeed or fail. When you do, the dashboard uses the\n`gh pr checks --watch` command to watch the PR checks.\n\n## `W` - Mark PR as Ready for Review\n\nPress <kbd>W</kbd> to mark the PR as ready for review. When you do, the dashboard uses the\n`gh pr ready` command to convert the PR from draft status to ready for review.\n\n## `x` - Close PR\n\nPress <kbd>x</kbd> to close the PR. When you do, the dashboard uses the `gh pr close` command to\nclose the PR.\n\n## `X` - Reopen PR\n\nPress <kbd>X</kbd> to reopen a closed PR. When you do, the dashboard uses the `gh pr reopen`\ncommand to reopen the PR.\n\n<Aside type=\"caution\" title=\"Watch out!\">\n**Prior to v3.10.0:** When you use some commands, the dashboard acts immediately and without\nprompting for confirmation.\n\n**Since v3.10.0:** When you use these command,s the dashboard displays a confirmation prompt.\n\n</Aside>\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/updating.mdx",
    "content": "---\ntitle: Updating\n---\n\nYou can update `dash` either with the [GitHub CLI](https://cli.github.com) or by\ndownloading the binaries manually.\n\n## Update Using `gh`\n\nTo update `dash` simply run:\n\n```sh\ngh extension upgrade dlvhdr/gh-dash\n```\n\nYou should see an output similar to:\n\n```sh\n[dash]: upgraded from v4.16.2 to v4.17.0\n✓ Successfully checked extension upgrades\n```\n\nRun `gh extension --help` for info on more commands.\n\n## Update Manually\n\nTo manually update `dash`, you can download the binaries from the latest release on GitHub under:\nhttps://github.com/dlvhdr/gh-dash/releases\n\nSearch for the binary that corresponds to your operating system and CPU\narchitecture.\n"
  },
  {
    "path": "docs/src/content/docs/getting-started/usage.mdx",
    "content": "---\ntitle: Usage\nlinkTitle: >-\n  ![icon:terminal](lucide)&nbsp;Usage\nsummary: >-\n  Get started using `dash`.\nsidebar:\n  order: 2\n---\n\nTo use `dash`, follow these steps after you've [installed it][01]:\n\n1. Run\n\n   ```bash\n   gh dash\n   ```\n\n2. Press <kbd>?</kbd> for help.\n3. Run `gh dash --help` for more info:\n\n   ```bash\n   Usage:\n     gh dash [flags]\n\n   Flags:\n     -c, --config string   use this configuration file (default lookup: a .gh-dash.yml file if inside a git repo, $GH_DASH_CONFIG env var, or if not set, $XDG_CONFIG_HOME/gh-dash/config.yml)\n         --debug           passing this flag will allow writing debug output to debug.log\n     -h, --help            help for Dash\n   ```\n\n## Flags\n\n### `--config`\n\nSpecify the path to a configuration file to use for the dashboard. If the configuration file\ndoesn't exist or is invalid, `dash` returns an error.\n\n```bash\ngh dash --config path/to/configuration/file.yml\n```\n\n| Aliases |  Type  | Default                                                                                                                   |\n| :------ | :----: | :------------------------------------------------------------------------------------------------------------------------ |\n| `-c`    | String | `.gh-dash.yml` file if inside a git repo, `$GH_DASH_CONFIG` env var, or if not set, `$XDG_CONFIG_HOME/gh-dash/config.yml` |\n\nIf you don't specify this flag, `dash` uses the default configuration.\nIf the file doesn't exist, `dash` will create it.\n\nThe location of the default configuration file depends on your system:\n\n1. If `$GH_DASH_CONFIG` is a non-empty string, `dash` will use this file for\n   its configuration.\n2. If `$GH_DASH_CONFIG` isn't set and you're in a git repository, it will look for `.gh-dash.yml` or `.gh-dash.yaml`\n   in the repository root.\n3. If neither of the above applies, then:\n   - If `$XDG_CONFIG_HOME` is a non-empty string, the default path is `$XDG_CONFIG_HOME/gh-dash/config.yml`.\n   - If `$XDG_CONFIG_HOME` isn't set, then:\n     - On Linux and macOS systems, the default path is `$HOME/.config/gh-dash/config.yml`.\n     - On Windows systems, the default path is `%USERPROFILE%\\.config\\gh-dash\\config.yml`.\n\nFor more information about authoring configurations, see [Configuration][02].\n\n### `--debug`\n\nSpecify whether `dash` should write logs to the `debug.log` file in the current directory. By\ndefault, `dash` doesn't output debug information.\n\n```bash\ngh dash --debug\n```\n\n| Aliases |  Type   | Default |\n| :------ | :-----: | :------ |\n| (None)  | Boolean | `false` |\n\nWhen you use this flag, `dash` creates the `debug.log` file in the current directory if it doesn't exist. If the file does exist, `dash` appends new log entries to it.\n\n### `--help`\n\nUse this flag to display the help information for `dash` in the terminal. If you specify this\nflag, `dash` ignores all other flags. It only displays the help information.\n\n```bash\ngh dash --help\n```\n\n| Aliases |  Type   | Default |\n| :------ | :-----: | :------ |\n| `-h`    | Boolean | `false` |\n\n### `--version`\n\nUse this flag to display the version information for `dash` in the terminal. If you specify this\nflag with the `--config` or `--debug` flags, `dash` ignores them. It only displays the version\ninformation.\n\n```bash\ngh dash --version\n```\n\n| Aliases |  Type   | Default |\n| :------ | :-----: | :------ |\n| `-v`    | Boolean | `false` |\n\nWhen you use this flag, `dash` emits the following information:\n\n```text\ngh-dash version <version>\ncommit: <commit_sha>\nbuilt at: <build_timestamp>\nbuilt by: <build_user>\ngoos: <operating_system>\ngoarch: <cpu_architecture>\n```\n\n- `<version>` is the extension's semantic version without a `v` prefix.\n- `<commit_sha>` is the exact commit SHA the extension was built from.\n- `<build_timestamp>` is the UTC date and time when the extension was built.\n- `<build_user>` is who built the extension. For official releases, this is always `goreleaser`.\n\nFor example, the version information for the [v3.7.7 release][03] on Windows with an x64 processor\nis:\n\n```text\ngh-dash version 3.7.7\ncommit: 6ce3f89ab0d73dd88e359133699d1cf920f88699\nbuilt at: 2023-04-15T08:42:16Z\nbuilt by: goreleaser\ngoos: windows\ngoarch: amd64\n```\n\n## Default Keybindings\n\nWhen you use `dash`, it displays the dashboard as a terminal UI (TUI). In the TUI, you can use\nseveral commands by pressing key combinations to navigate and interact with the dashboard.\n\nYou can press the <kbd>?</kbd> key to toggle the help menu in the UI. The help menu lists the available\nkeybindings for the current context.\n\nYou can press the <kbd>q</kbd> key to quit the dashboard and return to your normal terminal view.\n\nFor more information about the keybindings for the dashboard, see [Keybindings][04].\n\n[01]: /getting-started/\n[02]: /configuration/\n[03]: https://github.com/dlvhdr/gh-dash/releases/tag/v3.7.7\n[04]: /getting-started/keybindings/\n"
  },
  {
    "path": "docs/src/content/docs/insiders/index.mdx",
    "content": "---\ntitle: Join Insiders\n---\n\nimport { Icon } from \"@astrojs/starlight/components\";\nimport EnhanceCard from \"../../../components/EnhanceCard.astro\";\nimport FeatureCard from \"../../../components/FeatureCard.astro\";\nimport Sponsorship from \"../../../components/Sponsorship.astro\";\n\n`DASH Insiders` is a program you can join by sponsoring me on GitHub and gets you early access to\nnew companion apps and features.\n\nThe first app I worked on, [ENHANCE](../enhance), was successfully funded and is now fully open\nsource.\n\nCurrently, there are no benefits other than supporting me in\nmaintaining my apps and adding new features to them.\n\nIn the future I'm intending to create more apps so I can do everything through\nthe terminal. If you're also passionate about that please do support me and\nlet's make that a reality!\n\n<form action=\"#how-do-i-join\" class=\"flex w-full justify-center pt-8\">\n  <button\n    type=\"submit\"\n    class=\"flex items-center gap-2 bg-[var(--sl-color-accent)] px-4 py-2 font-bold text-black\"\n  >\n    Support Me!\n    <Icon class=\"mt-0\" name=\"heart\" size=\"20px\" color=\"var(--color-pink-800)\" />\n  </button>\n</form>\n\n<div class=\"m-auto mt-12 flex flex-col gap-2 md:w-full lg:w-1/2\">\n  <p>This is my current sponsorship goal:</p>\n  <Sponsorship server:defer />\n</div>\n\n## Future Plans\n\nSupporting me will help me make these things a reality:\n\n<div class=\"flex flex-col gap-2\">\n  <FeatureCard\n    project=\"dash\"\n    feature=\"Support for More Git Forges\"\n    description=\"DASH currently only works against GitHub. This will add support\n    for more git forges such as Gitlab, Bitbucket, Codeberg etc.\"\n    future={true}\n  />\n\n  <FeatureCard\n    project=\"dash\"\n    feature=\"Fully Editable PRs and Issues\"\n    description=\"Add support for fully editing a PR / Issue from DASH such as:\n    editing the title, description, base branch, deleting a comment etc.\"\n    future={true}\n  />\n\n  <FeatureCard\n    project=\"dash\"\n    feature=\"Search Autocompletions\"\n    description=\"Add autocompletions for the search bar for things like the\n    author, owner, repo, commenter, review requested etc.\"\n    future={true}\n  />\n\n  <FeatureCard\n    project=\"enhance\"\n    feature=\"View Repo-Level Workflow Runs\"\n    description=\"The ability to view checks at the repo level - against branches, tags or manually triggered. Currently it's only supported to view checks that are run against a PR.\"\n    future={true}\n  />\n</div>\n\n## Achieved Benefits\n\nThe community successfully funded the release of:\n\n<EnhanceCard />\n\n## How Do I Join?\n\nFollow the Sponsor button below and complete a sponsorship of -<br />**$5 a month or more**.\n\n_Note: you can cancel your sponsorship anytime._\n\nI would really appreciate your support! ❤️\n\n<iframe\n  src=\"https://github.com/sponsors/dlvhdr/card\"\n  title=\"Sponsor dlvhdr\"\n  height=\"120\"\n  width=\"100%\"\n  class=\"h-[200px] lg:h-[120px]\"\n></iframe>\n\n### FAQ\n\n<details>\n  <summary>What happens if I cancel my sponsorship?</summary>\n  If you cancel your subscription, you're automatically removed as a\n  collaborator and will miss out on all future updates of Insiders. However, you\n  may use the latest version that's available to you as long as you like. Just\n  remember that [GitHub deletes private\n  forks](https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository).\n</details>\n\n<details>\n  <summary>What about sponsorships lower than 5$ a month?</summary>\n  Sponsorships lower than $5 a month are also very much appreciated! They won't\n  grant you access to Insiders, but they will be counted towards reaching\n  sponsorship goals. Every sponsor helps me to implement new features and\n  releasing them to the public.\n</details>\n\n## How Does this Help Me?\n\nBy sponsoring me on one of the eligible tiers you:\n\n1. Get access to my private projects that you can download, use, view the code\n   and open issues.\n1. Help reach goals towards open sourcing these projects\n1. Show support for my other fully open source projects\n\n## Why Sponsorware\n\nI'm a full-stack developer who loves the terminal and I want to invest more time\ndoing that in a sustainable way.\n\nI have a full time job and this makes it hard to find time for open source.\nIn order to get some kind of funds to be able to work more on OSS I need an\nalternative income. This is an attempt to make it happen.\n\nIf you want more details you can [read this](https://github.com/sponsorware/docs) to understand the sponsorware release strategy.\n\n## Terms\n\n- Each app will have a goal towards open sourcing it. Future major releases may\n  require additional sponsorship goals.\n- Please don't distribute the source code of Insiders. You may freely use it for public, private or commercial projects, privately fork or mirror it, but please don't make the source code public, as it would counteract the sponsorware strategy.\n- If you cancel your subscription, you're automatically removed as a collaborator and will miss out on all future updates of Insiders. However, you may use the latest version that's available to you as long as you like. Just remember that [GitHub deletes private forks](https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository).\n"
  },
  {
    "path": "docs/src/content.config.ts",
    "content": "import { defineCollection, z } from \"astro:content\";\nimport { docsLoader } from \"@astrojs/starlight/loaders\";\nimport { docsSchema } from \"@astrojs/starlight/schema\";\n\nexport const collections = {\n  docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),\n};\n"
  },
  {
    "path": "docs/src/data/latestVersion.ts",
    "content": "const GH_TOKEN = import.meta.env.GH_TOKEN;\n\nexport const getLatestVersion = async () => {\n  const response = await fetch(\n    \"https://api.github.com/repos/dlvhdr/gh-dash/releases/latest\",\n    {\n      method: \"GET\",\n      headers: {\n        Authorization: `bearer ${GH_TOKEN}`,\n      },\n    },\n  );\n\n  if (response.status != 200) {\n    return { tag_name: \"v4.0.0\" };\n  }\n\n  const data: { tag_name: string } = await response.json();\n\n  return data;\n};\n"
  },
  {
    "path": "docs/src/data/schemas/defaults.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: defaults.schema.yaml\ntitle: Default Options\ndescription: Define options that can be overridden per-section.\nschematize:\n  details: |\n    These settings define the default behavior for the dashboard. You can override many of these\n    settings on a per-section basis.\n  default:\n    details: |\n      By default, the dashboard is configured to:\n\n      - Display the preview pane with a width of 50 columns for all work items.\n      - Only fetch 20 PRs and issues at a time for each section.\n      - Display the PRs view when the dashboard loads.\n      - Refetch PRs and issues for each section every 30 minutes.\n      - Display dates using relative values.\n\n      For more details on the default layouts, see the documentation for [sref:PR] and [sref:issue]\n      layout definitions.\n\n      [sref:PR]:    layout.pr.default-value\n      [sref:issue]: layout.issue.default-value\n  format: yaml\ntype: object\ndefault:\n  preview:\n    open: true\n    width: 50\n  prsLimit: 20\n  prApproveComment: LGTM\n  issuesLimit: 20\n  view: prs\n  refetchIntervalMinutes: 30\nproperties:\n  layout:\n    title: Layout Options\n    description: Defines the layout for the work item tables in the dashboard.\n    schematize:\n      weight: 1\n      skip_schema_render: true\n      details: |\n        This setting defines the layout for the work item tables in the dashboard. You can override\n        these settings in any section you define in the [sref:`prSections`] or\n        [sref:`issueSections`] settings.\n\n        They determine which columns are displayed and how.\n\n        [sref:`prSections`]: gh-dash.prSections\n        [sref:`issueSections`]: gh-dash.issueSections\n    type: object\n    properties:\n      prs:\n        $ref: ./layout/pr.yaml\n      issues:\n        $ref: ./layout/issue.yaml\n  prsLimit:\n    title: PR Fetch Limit\n    description: Global limit on the number of PRs fetched for the dashboard\n    schematize:\n      weight: 2\n      details: |\n        This setting defines how many PRs the dashboard should fetch for each section when:\n\n        - The dashboard first loads.\n        - The [sref:fetch interval] elapses.\n        - You navigate to the next PR in a table without another fetched PR to display.\n        - You use the [refresh current section] or [refresh all sections] commands.\n\n        [sref:fetch interval]:     defaults.fetchIntervalMinutes\n        [refresh current section]: /getting-started/keybindings/global/#refresh-current-section\n        [refresh all sections]:    /getting-started/keybindings/global/#refresh-all-sections\n    type: integer\n    minimum: 1\n    default: 20\n  issuesLimit:\n    title: Issue Fetch Limit\n    description: Global limit on the number of issues fetched for the dashboard\n    schematize:\n      weight: 3\n      details: |\n        This setting defines how many issues the dashboard should fetch for each section when:\n\n        - The dashboard first loads.\n        - The [sref:fetch interval] elapses.\n        - You navigate to the next issue in a table without another fetched issue to display.\n        - You use the [refresh current section] or [refresh all sections] commands.\n\n        [sref:fetch interval]:     defaults.fetchIntervalMinutes\n        [refresh current section]: /getting-started/keybindings/global/#refresh-current-section\n        [refresh all sections]:    /getting-started/keybindings/global/#refresh-all-sections\n    type: integer\n    minimum: 1\n    default: 20\n  preview:\n    title: Preview Pane\n    description: Defaults for the preview pane\n    schematize:\n      weight: 3\n      skip_schema_render: true\n      details: |\n        These settings define the how the preview pane displays in the dashboard. You can specify\n        whether the preview pane is open by default and how many columns wide it should be when\n        displayed.\n    type: object\n    properties:\n      open:\n        title: Open on Load\n        description: Whether to have the preview pane open by default when the dashboard loads.\n        schematize:\n          weight: 1\n          details: |\n            Specifies whether the preview pane should be open by default for the selected work item\n            when the dashboard loads. You can always use the [toggle preview pane] command to\n            toggle the preview pane's visibility.\n\n            By default, the dashboard displays the preview pane.\n\n            [toggle preview pane]: /getting-started/keybindings/preview/#toggle-preview-pane\n        type: boolean\n        default: true\n      width:\n        title: Preview Pane Width\n        description: Specifies the width of the preview pane in columns.\n        schematize:\n          weight: 2\n          details: |\n            Specifies how many columns wide the preview pane should be when displayed.\n\n            By default, the preview pane is 50 columns wide.\n        type: integer\n        minimum: 1\n        default: 50\n  refetchIntervalMinutes:\n    title: Refetch Interval in Minutes\n    description: Specifies how often to refetch PRs and Issues in minutes.\n    schematize:\n      weight: 4\n      details: |\n        This setting defines how often the dashboard should fetch issues and PRs from GitHub. The\n        dashboard fetches work items for every section in the active view when the dashboard loads\n        and the first time you switch to the inactive view.\n\n        After the dashboard fetches the work items for the first time, it waits until this setting's\n        defined interval elapses before fetching the work items again.\n\n        By default, the dashboard refetches work items every 30 minutes.\n\n        To disable the refetching interval set it to 0.\n\n        You can always use the [refresh current section] or [refresh all sections] command to\n        refetch work items in the current view. If you change the search query for a view, the\n        dashboard fetches results for the updated query immediately.\n\n        [refresh current section]: /getting-started/keybindings/global/#refresh-current-section\n        [refresh all sections]:    /getting-started/keybindings/global/#refresh-all-sections\n    type: integer\n    minimum: 0\n    default: 30\n  dateFormat:\n    title: Date format\n    description: Specifies how dates are formatted.\n    schematize:\n      weight: 5\n      details: |\n        This setting defines how dates are formatted. The format can be either be \"relative\" or a \n        [go time format].\n\n        By default, the format is \"relative\" which fits just inside the default column width of\n        updated at in the issues and pull request layouts.\n\n        You may need to adjust the layout column width depending on your format.\n\n        [go time format]: https://pkg.go.dev/time#pkg-constants\n    type: integer\n    minimum: 1\n    default: 30\n  view:\n    title: Default View\n    description: Specifies whether the dashboard should display the PRs or Issues view on load.\n    schematize:\n      weight: 5\n      details: |\n        This setting defines whether the dashboard should display the PRs or Issues view when it\n        first loads.\n\n        By default, the dashboard displays the PRs view.\n    type: string\n    enum:\n      - issues\n      - prs\n    default: prs\n  prApproveComment:\n    title: PR Approve Comment\n    description: The default comment prefilled when approving a PR.\n    schematize:\n      weight: 6\n      details: |\n        This setting defines the default comment used as a starting point when [approving a PR].\n        This can be set as an empty string to not prefill a comment.\n\n        By default, the comment is \"LGTM\".\n\n        [approving a PR]: /getting-started/keybindings/selected-pr/#approve-pr\n    type: string\n    default: LGTM\n"
  },
  {
    "path": "docs/src/data/schemas/definitions/grow.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: grow.schema.yaml\ntitle: Grow Column\ndescription: Select whether the column should grow to fill available space.\nschematize:\n  weight: 1\n  details: |\n    Specify whether the column should grow to fill the available space.\n\n    Set this value to `true` and the column's width expands to fill any leftover space in the\n    terminal after accounting for other columns and the preview pane. Set this value to `false`\n    to use the value of [sref:`width`] instead.\n\n    We recommend only setting this for one column in a given section layout.\n\n    [sref:`width`]: layout.options.width\n  no_munge_description: true\n  skip_more_info: true\ntype: boolean\n"
  },
  {
    "path": "docs/src/data/schemas/definitions/hexcolor.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: color.schema.yaml\ntitle: Color\ndescription: >-\n  Represents a valid color: either a hex color like `#a3c` or `#aa33cc`, or an\n  ANSI color index from `0` to `255`.\ntype: string\nformat: color\npattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\nexample: \"#aa33cc\"\nschematize:\n  details: >-\n    Every color for the dashboard's theme must be either a valid\n    [hex color](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color), like `#a3c` or\n    `#aa33cc`, or an ANSI color index from `0` to `255` (e.g. `\"12\"`, `\"013\"`). Using ANSI\n    indices allows your theme to follow your terminal's color palette.\n  no_munge_description: true\n  skip_more_info: true\n"
  },
  {
    "path": "docs/src/data/schemas/gh-dash.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: gh-dash.schema.yaml\ntitle: Dashboard Configuration\ndescription: Settings for the GitHub Dashboard.\ntype: object\nproperties:\n  prSections:\n    title: Pull Request Sections\n    description: Define sections for the dashboard's PR view.\n    schematize:\n      weight: 1\n      details: |\n        The `prSections` setting defines one or more sections to display in the dashboard's PRs\n        view as tabs. Each section needs a title, which is displayed as the tab name for the\n        section, and a [GitHub search filter]. The dashboard queries GitHub with the search filter\n        to populate the list of PRs to display for that section.\n\n        For more information about defining a PR section, see [sref:PR Section Options].\n\n        [GitHub search filter]: https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests\n        [sref:PR Section Options]: pr-section\n      default:\n        details: |\n          By default, the PRs view on the dashboard has three sections:\n\n          - The ![styled:`My Pull Requests`]() section fetches open PRs authored by you.\n          - The ![styled:`Needs My Review`]() section fetches open PRs where you are a requested\n            reviewer.\n          - The ![styled:`Involved`]() section fetches open PRs authored by someone else and that\n            meet at least one of the following criteria:\n\n            - The PR is assigned to you.\n            - The PR's body, a comment on the PR, or one of the PR's commit messages mentions you.\n            - You commented on the PR.\n        format: yaml\n    type: array\n    items:\n      $ref: ./pr-section.yaml\n    default:\n      - title: My Pull Requests\n        filters: >-\n          is:open\n          author:@me\n      - title: Needs My Review\n        filters: >-\n          is:open\n          review-requested:@me\n      - title: Involved\n        filters: >-\n          is:open\n          involves:@me\n          -author:@me\n  issuesSections:\n    title: Issue Sections\n    description: Define sections for the dashboard's Issues view.\n    schematize:\n      weight: 2\n      details: |\n        The `issueSections` setting defines one or more sections to display in the dashboard's\n        Issues view as tabs. Each section needs a title, which is displayed as the tab name for the\n        section, and a [GitHub search filter]. The dashboard queries GitHub with the search filter\n        to populate the list of issues to display for that section.\n\n        For more information about defining an issue section, see [sref:Issue Section Options].\n\n        [GitHub search filter]: https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests\n        [sref:Issue Section Options]: issue-section\n      default:\n        details: |\n          By default, the Issues view on the dashboard has three sections:\n\n          - The ![styled:`My Issues`]() section fetches open issues authored by you.\n          - The ![styled:`Assigned`]() section fetches open issues assigned to you.\n          - The ![styled:`Involved`]() section fetches open issues authored by someone else and that\n            meet at least one of the following criteria:\n\n            - The issue is assigned to you.\n            - The issue's body or a comment on the issue mentions you.\n            - You commented on the issue.\n      format: yaml\n    type: array\n    items:\n      $ref: ./issue-section.yaml\n    default:\n      - title: My Issues\n        filters: >-\n          is:open\n          author:@me\n      - title: Assigned\n        filters: >-\n          is:open\n          assignee:@me\n      - title: Involved\n        filters: >-\n          is:open\n          involves:@me\n          -author:@me\n  defaults:\n    $ref: ./defaults.yaml\n    schematize:\n      weight: 3\n  repoPaths:\n    title: Repo Path Map\n    description: Key-value pairs that match repositories to local file paths.\n    schematize:\n      weight: 4\n      details: |\n        You can use the `repoPaths` setting to map repository names (as keys) to local paths\n        (as values). This map coonfigures where to locate repositories when checking out PRs.\n\n        The mappings can be exact matches, like the full name or path of a repository, or wildcard\n        matches using the `owner` and a partial path.\n\n        An exact match for the full repository name to a full path takes priority over a matching\n        wildcard. Wildcard keys must match to a wildcard path.\n\n        The `RepoName` and `RepoPath` keybinding arguments are fully expanded when sent to the\n        command.\n      skip_schema_render: true\n      example_format: yaml\n    type: object\n    examples:\n      - schematize:\n          title: Matching Repositories\n          details: |\n            In this example, the first key is defined with a wildcard (`*`) as `dlvhdr/*`, so the\n            dashboard will use this entry to resolve the path for any repo in the `dlvhdr`\n            namespace, like [`dlvhdr/jb`] or [`dlvhdr/harbor`]. Note that the value for this key\n            also uses a wildcard. If the key specifies a wildcard, the value must specify one too.\n\n            If a repository in the `dlvhdr` namespace has been cloned into the `~/code/repos`\n            folder, the dashboard will be able to checkout PRs for that repository locally.\n\n            If the repository isn't found, the [checkout command] raises an error.\n\n            The second key defines an exact mapping between the `dlvhdr/gh-dash` repository and the\n            `~/code/gh-dash` folder. Because this is a non-wildcard mapping, the dashboard will use\n            this value to resolve the repository path for `dlvhdr/gh-dash` even though there's also\n            an entry for `dlvhdr/*`.\n        dlvhdr/*: ~/code/repos/*\n        dlvhdr/gh-dash: ~/code/gh-dash\n    patternProperties:\n      '\\*$':\n        type: string\n        pattern: '\\*$'\n        title: With a Wildcard\n        description: >-\n          If the repo name (key) includes an asterisk, the path (value) must too.\n        schematize:\n          href: ends-with-wildcard\n          no_pattern_in_heading: true\n          weight: 1\n          details: |\n            If the key for an `repoPath` entry ends with a wildcard (`*`), its value must also have\n            a wildcard. If a key ends with a wildcard but the value doesn't, `gh-dash` won't be\n            able to correctly map repositories to folders.\n      '^[^\\*]+$':\n        type: string\n        pattern: '^[^\\*]+$'\n        title: Without a Wildcard\n        description: >-\n          If the repo name (key) doesn't include an asterisk, the path (value) can't either.\n        schematize:\n          href: no-asterisks\n          no_pattern_in_heading: true\n          weight: 2\n          details: |\n            If the key for an `repoPath` entry doesn't have a wildcard (`*`), its value must not\n            have a wildcard. If a key ends without a wildcard but the value does, `gh-dash` won't\n            be able to correctly map repositories to folders.\n  keybindings:\n    title: Keybindings\n    description: Define keybindings to run shell commands.\n    schematize:\n      details: |\n        Define your own custom keybindings to run shell commands using [Go templates]. You can define\n        your keybindings for the PRs and Issues views separately.\n      skip_schema_render: true\n      example_format: yaml\n      weight: 5\n    type: object\n    properties:\n      prs:\n        $ref: ./keybindings/prs.yaml\n        schematize:\n          weight: 1\n      issues:\n        $ref: ./keybindings/issues.yaml\n        schematize:\n          weight: 2\n    examples:\n      - schematize:\n          title: Pin an Issue\n          details: |\n            This example binds <kbd>P</kbd> in the Issues view of the dashboard to the\n            `gh issue pin` command to pin the selected issue in the repository.\n        issues:\n          - key: P\n            command: gh issue pin {{ .IssueNumber }} --repo {{ .RepoName }}\n      - schematize:\n          title: Review PRs\n          details: |\n            This example binds <kbd>c`]() and ![kbd:`v</kbd> in the PRs view of the dashboard to\n            checkout the selected PR and open the repository in Neovim and VS Code respectively.\n\n            The Neovim keybinding opens the editor in another `tmux` window.\n        prs:\n          - key: c\n            command: >\n              tmux new-window -c {{.RepoPath}} '\n                gh pr checkout {{.PrNumber}} &&\n                nvim -c \":DiffviewOpen master...{{.HeadRefName}}\"\n              '\n          - key: v\n            command: >\n              cd {{.RepoPath}} &&\n              code . &&\n              gh pr checkout {{.PrNumber}}\n  theme:\n    $ref: ./theme.yaml\n    schematize:\n      weight: 6\n  pager:\n    title: Pager\n    description: Specify the pager settings to use in the dashboard.\n    type: object\n    schematize:\n      skip_schema_render: true\n      weight: 7\n    properties:\n      diff:\n        title: Diff Pager\n        description: Specifies the pager to use when diffing.\n        type: string\n        anyOf:\n          - type: string\n          - enum:\n              - less\n              - delta\n        default: less\n  showAuthorIcons:\n    title: Show Author Role Icons\n    description: |\n      Specifies whether to show author-role icons in the dashboard.\n      Set this value to `false` to hide the author-role icons.\n      See the [Theme Icons](theme#icons) section and\n      [Icon Colors](theme#colors.icons) section for\n      configuration options you can set to change the author-role icons and author-role icon colors.\n    type: boolean\n    schematize:\n      weight: 8\n  smartFilteringAtLaunch:\n    title: Smart Filtering At Launch\n    description: |\n      Set this to `false` to disable [Smart Filtering](/getting-started/smartfiltering) at `gh-dash` launch.\n    type: boolean\n    schematize:\n      weight: 8\n"
  },
  {
    "path": "docs/src/data/schemas/issue-section.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: issue-section.schema.yaml\ntitle: Issue Section Options\ndescription: Defines a section in the dashboard's Issues view.\ntype: object\nschematize:\n  details: |\n    Defines a section in the dashboard's Issues view.\n\n    Every section must define a [sref:`title`] and [sref:`filters`].\n\n    When you define [sref:`limit`] for a section, that value overrides the\n    [sref:`defaults.issuesLimit`] setting.\n\n    When you define [sref:`layout`] for a section, that value overrides the\n    [sref:`defaults.layout.issue`] setting.\n\n    [sref:`title`]:                 issue-section.title\n    [sref:`filters`]:               issue-section.filters\n    [sref:`limit`]:                 issue-section.limit\n    [sref:`layout`]:                issue-section.layout\n    [sref:`defaults.issuesLimit`]:  defaults.issuesLimit\n    [sref:`defaults.layout.issue`]: defaults.layout.issue\nrequired:\n  - title\n  - filters\nproperties:\n  title:\n    title: Issue Title\n    description: Defines the section's name as displayed in the tabs for the issues view.\n    type: string\n    schematize:\n      weight: 1\n      details: |\n        This setting defines the section's name. The dashboard displays this value in the tabs for\n        the issues view.\n  filters:\n    title: Issue Filters\n    description: Defines the GitHub search filters for the issues in the section's table.\n    type: string\n    schematize:\n      weight: 2\n      details: |\n        This setting defines the [GitHub search filters][01] for the issues in the section's table.\n\n        Don't specify `is:issue` for this setting. The dashboard always adds that filter for issue\n        sections.\n\n        You can define any combination of search filters. To make it easier to read and maintain\n        your filters, we recommend using the `>-` syntax after the `filter` key and writing one\n        filter per line.\n\n        For example:\n\n        ```yaml\n        - title: Involved\n          filter: >-\n            is:open\n            involves:@me\n            -author:@me\n            updated:>={{ nowModify \"-2w\" }}\n        ```\n\n        For more information about writing filters for searching GitHub, see [Searching].\n\n        [Searching]: /configuration/searching\n  layout:\n    $ref: ./layout/issue.yaml\n    schematize:\n      weight: 3\n  limit:\n    title: Issue Fetch Limit\n    type: integer\n    minimum: 1\n    schematize:\n      weight: 4\n      details: |\n        This setting defines how many issues the dashboard should fetch for the section when:\n\n        - The dashboard first loads.\n        - The [sref:fetch interval] elapses.\n        - You navigate to the next issue in a table without another fetched issue to display.\n        - You use the [refresh current section] or [refresh all sections] commands.\n\n        This setting overrides the [sref:`defaults.issuesLimit`] setting.\n\n        [sref:fetch interval]:     defaults.fetchIntervalMinutes\n        [refresh current section]: /getting-started/keybindings/global/#refresh-current-section\n        [refresh all sections]:    /getting-started/keybindings/global/#refresh-all-sections\n        [sref:`defaults.issuesLimit`]: defaults.issuesLimit\n"
  },
  {
    "path": "docs/src/data/schemas/keybindings/entry.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: entry.schema.yaml\ntitle: Valid Keybinding Entry\ndescription: A keybinding to run a shell command in a view.\ntype: object\nschematize:\n  details: |\n    Every valid entry for the [sref:`keybindings.prs`] and [sref:`keybindings.issues`] configuration\n    options must have a [sref:`key`] and [sref:`command`]. When a user presses the key or key\n    combination in the view where those keys are bound, the dashboard shells out and executes the\n    command.\n\n    To help you identify your custom commands, an additional [sref:`name`] property can be supplied to describe it in the help menu.\n\n    [sref:`keybindings.prs`]: keybindings.prs\n    [sref:`keybindings.issues`]: keybindings.issues\n    [sref:`key`]: keybindings.entry.key\n    [sref:`name`]: keybindings.entry.name\n    [sref:`command`]: keybindings.entry.command\nrequired:\n  - key\nproperties:\n  key:\n    title: Bound Key\n    description: The combination of keys that trigger the command.\n    type: string\n    schematize:\n      weight: 1\n      details: |\n        Specifies one or more keys to bind to the [sref:`command`] for an entry.\n\n        [sref:`command`]: keybindings.entry.command\n  name:\n    title: Command name\n    description: A descriptive name for the command\n    type: string\n    schematize:\n      weight: 1\n      details: |\n        To help you identify your custom commands, an additional [sref:`name`] property can be supplied to describe it in the help menu.\n\n        [sref:`name`]: keybindings.entry.name\n  command:\n    title: Bound Command\n    description: The shell command that runs when you press the key combination.\n    type: string\n    schematize:\n      weight: 2\n      details: |\n        Specifies the command bound to the [sref:`key`] for an entry.\n\n        [sref:`key`]: keybindings.entry.key\n  builtin:\n    title: Builtin Command\n    description: One of gh-dash's builtin commands that will run when you press the key combination\n    type: string\n    schematize:\n      weight: 2\n      details: |\n        Specifies the builtin command bound to the the [sref:`key`] for an entry.\n\n        For global actions, the available builtin commands are: `up`, `down`, `firstLine`, `lastLine`, `togglePreview`, `openGithub`, `refresh`, `refreshAll`, `pageDown`, `pageUp`, `nextSection`, `prevSection`, `search`, `copyurl`, `copyNumber`, `help`, `quit`.\n\n        For PRs, the available builtin commands are: `prevSidebarTab`, `nextSidebarTab`, `approve`, `assign`, `unassign`, `comment`, `diff`, `checkout`, `close`, `ready`, `reopen`, `merge`, `update`, `watchChecks`, `viewIssues`, `summaryViewMore`.\n\n        For Issues, the available builtin commands are: `assign`, `unassign`, `comment`, `close`, `reopen`, `viewPrs`.\n\n        [sref:`key`]: keybindings.entry.key\n"
  },
  {
    "path": "docs/src/data/schemas/keybindings/issues.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: issues.schema.yaml\ntitle: Issues Commands\ndescription: Keybindings for the Issues View\nschematize:\n  details: |\n    Define any number of keybindings for the Issues view.\n\n    The available arguments are:\n\n    | Argument      | Description                                                                     |\n    | ------------- | ------------------------------------------------------------------------------- |\n    | `RepoName`    | The full name of the repo (e.g. `dlvhdr/gh-dash`)                               |\n    | `RepoPath`    | The path to the Repo, using the `config.yml` `repoPaths` key to get the mapping |\n    | `IssueNumber` | The Issue number                                                                |\ntype: array\nitems:\n  $ref: ./entry.yaml\n"
  },
  {
    "path": "docs/src/data/schemas/keybindings/prs.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: prs.schema.yaml\ntitle: PRs Commands\ndescription: Keybindings for the Pull Request View\nschematize:\n  details: |\n    Define any number of keybindings for the PRs view.\n\n    The available arguments are:\n\n    | Argument      | Description                                                                     |\n    | ------------- | ------------------------------------------------------------------------------- |\n    | `RepoName`    | The full name of the repo (e.g. `dlvhdr/gh-dash`)                               |\n    | `RepoPath`    | The path to the Repo, using the `config.yml` `repoPaths` key to get the mapping |\n    | `PrNumber`    | The PR number                                                                   |\n    | `HeadRefName` | The PR's remote branch name                                                     |\ntype: array\nitems:\n  $ref: ./entry.yaml\n"
  },
  {
    "path": "docs/src/data/schemas/layout/issue.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: issue.schema.yaml\ntitle: Issue Section Layout\ndescription: Defines the columns an issue section displays in its table.\nschematize:\n  details: |\n    You can define how an issue section displays items in its table by setting options for the\n    available columns. You can define a column's width, whether it grows to fill available space,\n    and whether the column should be visible at all.\n\n    Note that if the length of a column's text exceeds the defined column [sref:`width`], the view\n    truncates the column's text to two characters shorter than the column's width. For example, if\n    the width is `6`, `gh-dash` displays as ![styled:`gh-d`]().\n\n    Column headings have their color defined by the [sref:`theme.colors.text.primary`] setting.\n\n    [sref:`width`]:                     layout.options.width\n    [sref:`theme.colors.text.primary`]: theme.colors.text.primary\n  format: yaml\n  default:\n    details: |\n      By default, issue views display the following columns in the order they're listed:\n\n      1. [sref:`updatedAt`] with a width of 7 columns.\n      1. [sref:`state`] with a width of 3 columns.\n      1. [sref:`repo`] with a width of 15 columns.\n      1. [sref:`title`], set to grow to fill available space.\n      1. [sref:`creator`] with a width of 10 columns.\n      1. [sref:`comments`] with a width of 3 columns.\n      1. [sref:`reactions`] with a width of 3 columns.\n\n      ```alert\n      ---\n      variant: primary\n      ---\n      Even though the `state`, `title`, `comments`, and `reactions` settings\n      aren't explicitly defined in your configuration file, they're added to\n      the table unless you set their [sref:`hidden`] option to `false`.\n\n      [sref:`hidden`]:    layout.options.hidden\n      ```\n\n      [sref:`updatedAt`]: layout.issue.updatedAt\n      [sref:`state`]:     layout.issue.state\n      [sref:`repo`]:      layout.issue.repo\n      [sref:`title`]:     layout.issue.title\n      [sref:`creator`]:   layout.issue.creator\n      [sref:`comments`]:  layout.issue.comments\n      [sref:`reactions`]: layout.issue.reactions\ntype: object\ndefault:\n  updatedAt:\n    width: 7\n  repo:\n    width: 15\n  creator:\n    width: 10\n  assignees:\n    width: 20\n    hidden: true\nproperties:\n  updatedAt:\n    title: Issue Updated At Column\n    description: Defines options for the updated at column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 1\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays how recently the issue was updated. The entry shows the time elapsed\n        since the last update, like ![styled:`1h`]() or ![styled:`3d`]().\n\n        The heading for this column is ![styled:``]().\n    default:\n      width: 7\n  state:\n    title: Issue State Column\n    description: Defines options for the state column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 2\n      skip_schema_render: true\n      details: |\n        This column displays the issue's state. When an issue is open, the column displays the icon\n        ![styled:``](. \"open-issue\") with the color set to `#42a0fa`. When an issue is closed, the\n        column displays the icon ![styled:``](. \"faint-text\") with the color set to\n        [sref:`theme.colors.text.faint`].\n\n        The heading for this column is ![styled:``]().\n\n        [sref:`theme.colors.text.faint`]: theme.colors.text.faint\n  repo:\n    title: Issue Repo Column\n    description: Defines options for the repo column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 3\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the name of the repository the issue is filed in. The entry shows the\n        name of the repository without the owner, like ![styled:`gh-dash`]() for the\n        `https://github.com/dlvhdr/gh-dash` repository.\n\n        The heading for this column is ![styled:``]().\n\n        [sref:`width`]: layout.options.width\n    default:\n      width: 15\n  title:\n    title: Issue Title Column\n    description: Defines options for the title column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 4\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the issue's number followed by its title. This column is always\n        displayed unless you set [sref:`hidden`] to `false`. By default, it grows to fill the\n        available space in the terminal after accounting for other column widths.\n\n        The heading for this column is ![styled:`Title`]().\n\n        The [sref:`theme.colors.text.primary`] setting defines the issue number's color.\n\n        [sref:`hidden`]:                    layout.options.hidden\n        [sref:`theme.colors.text.primary`]: theme.colors.text.primary\n  creator:\n    title: Issue Creator Column\n    description: Defines options for the creator column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 5\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the username for the person who created the issue.\n\n        The heading for this column is ![styled:`Creator`]().\n    default:\n      width: 10\n  creatorIcon:\n    title: Issue Creator Role Icon\n    description: Defines options for the role icon for each issue in an issue section.\n    type: object\n    properties:\n      hidden:\n        title: Hide Creator Icon\n        description: Specify whether the role icon for issue creators should be hidden from view.\n        schematize:\n          details: |\n            Set this value to `true` to hide the role icon for issue creators.\n        type: boolean\n    schematize:\n      weight: 6\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This setting affects display of the role icon for the person who created the issue.\n  assignees:\n    title: Issue Assignees Column\n    description: Defines options for the assignees column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 7\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the usernames for the people assigned to the issue.\n\n        The heading for this column is ![styled:`Assignees`]().\n    default:\n      width: 20\n      hidden: true\n  comments:\n    title: Issue Comments Column\n    description: Defines options for the comments column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 8\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the count of comments on the issue as an integer.\n\n        The heading for this column is ![styled:``]().\n  reactions:\n    title: Issue Reactions Column\n    description: Defines options for the reactions column in an issue section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 9\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column ddisplays the count of all reactions on the issue as an integer.\n\n        The heading for this column is ![styled:``]().\n"
  },
  {
    "path": "docs/src/data/schemas/layout/options.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: layout.options.schema.yaml\ntitle: Valid Layout Options\nschematize:\n  details: |\n    Any column can define the [sref:`grow`], [sref:`width`], and [sref:`hidden`] options.\n\n    [sref:`hidden`]: layout.options.hidden\n    [sref:`grow`]: layout.options.grow\n    [sref:`width`]: layout.options.width\ntype: object\nproperties:\n  grow:\n    title: Grow Column\n    description: Select whether the column should grow to fill available space.\n    schematize:\n      weight: 1\n      details: |\n        Specify whether the column should grow to fill the available space.\n\n        Set this value to `true` and the column's width expands to fill any leftover space in the\n        terminal after accounting for other columns and the preview pane. Set this value to `false`\n        to use the value of [sref:`width`] instead.\n\n        We recommend only setting this for one column in a given section layout.\n\n        [sref:`width`]: layout.options.width\n    type: boolean\n  width:\n    title: Column Width\n    description: Select the column's width by cell count.\n    schematize:\n      weight: 2\n      details: |\n        Specify the column's width by character count. Because the dashboard expects the terminal\n        font to be monospace, this is a reliable way to ensure a minimum width for readability.\n    type: integer\n    minimum: 0\n  hidden:\n    title: Hide Column\n    description: Select whether the column should be hidden from view.\n    schematize:\n      weight: 3\n      details: |\n        Specify whether the column should be hidden from view. Set this value to `true` to hide the\n        column or `true` to show it.\n    type: boolean\n"
  },
  {
    "path": "docs/src/data/schemas/layout/pr.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: pr.schema.yaml\ntitle: PR Section Layout\ndescription: Defines the columns a PR section displays in its table.\ntype: object\nschematize:\n  details: |\n    You can define how a PR section displays items in its table by setting options for the\n    available columns. You can define a column's width, whether it grows to fill available space,\n    and whether the column should be visible at all.\n\n    Note that if the length of a column's text exceeds the defined column [sref:`width`], the view\n    truncates the column's text to two characters shorter than the column's width. For example, if\n    the width is `6`, `gh-dash` displays as ![styled:`gh-d`]().\n\n    Column headings have their color defined by the [sref:`theme.colors.text.primary`] setting.\n\n    [sref:`width`]:                     layout.options.width\n    [sref:`theme.colors.text.primary`]: theme.colors.text.primary\n  format: yaml\n  default:\n    details: |\n      By default, PR views display the following columns in the order they're listed:\n\n      1. [sref:`updatedAt`] with a width of 7 columns.\n      1. [sref:`state`] with a width of 3 columns.\n      1. [sref:`repo`] with a width of 15 columns.\n      1. [sref:`title`], set to grow to fill available space.\n      1. [sref:`author`] with a width of 10 columns.\n      1. [sref:`reviewStatus`] with a width of 3 columns.\n      1. [sref:`ci`] with a width of 3 columns.\n      1. [sref:`lines`] with a width of 16 columns.\n\n      ```alert\n      ---\n      variant: primary\n      ---\n      Even though the `state`, `title`, `comments`, and `reactions` settings\n      aren't explicitly defined in your configuration file, they're added to\n      the table unless you set their [sref:`hidden`] option to `false`.\n\n      [sref:`hidden`]: layout.options.hidden\n      ```\n\n      [sref:`updatedAt`]:    layout.pr.updatedAt\n      [sref:`state`]:        layout.pr.state\n      [sref:`repo`]:         layout.pr.repo\n      [sref:`title`]:        layout.pr.title\n      [sref:`author`]:       layout.pr.author\n      [sref:`reviewStatus`]: layout.pr.reviewStatus\n      [sref:`ci`]:           layout.pr.ci\n      [sref:`lines`]:        layout.pr.lines\ndefault:\n  updatedAt:\n    width: 7\n  repo:\n    width: 15\n  author:\n    width: 15\n  assignees:\n    width: 20\n    hidden: true\n  base:\n    width: 15\n    hidden: true\n  lines:\n    width: 16\nproperties:\n  updatedAt:\n    title: PR Updated At Column\n    description: Defines options for the updated at column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 1\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays how recently the PR was updated. The entry shows the time elapsed\n        since the last update, like ![styled:`1h`]() or ![styled:`3d`]().\n\n        The heading for this column is ![styled:``]().\n    default:\n      width: 7\n  state:\n    title: PR State Column\n    description: Defines options for the state column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 2\n      skip_schema_render: true\n      details: |\n        This column displays the PR's state as one of the  following icons:\n\n        - When a PR is open and ready for review, the icon is ![styled:``](. \"ready-review\") and\n          the color is `#42a0fa`.\n        - When a PR is in draft mode, the icon is ![styled:``](. \"faint-text\") and the color is\n          set to the value of [sref:`theme.colors.text.faint`].\n        - When a PR is merged, the icon is ![styled:``](. \"merged\") and the color is `#a371f7`.\n        - When a PR is closed without merging, the icon is ![styled:``](. \"closed-pr\") and the\n          color is `#c38080`.\n\n        This heading for this column is ![styled:``]().\n\n        [sref:`theme.colors.text.faint`]: theme.colors.text.faint\n  repo:\n    title: PR Repo Column\n    description: Defines options for the repo column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 3\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the name of the repository the PR is filed in. The entry shows the\n        name of the repository without the owner, like ![styled:`gh-dash`]() for the\n        `https://github.com/dlvhdr/gh-dash` repository.\n\n        The heading for this column is ![styled:``]().\n\n        [sref:`width`]: layout.options.width\n    default:\n      width: 15\n  title:\n    title: PR Title Column\n    description: Defines options for the title column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 4\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the PR's number followed by its title. This column is always displayed\n        unless you set [sref:`hidden`] to `false`. By default, it grows to fill the available space\n        in the terminal after accounting for other column widths.\n\n        The heading for this column is ![styled:`Title`]().\n\n        The [sref:`theme.colors.text.primary`] setting defines the issue number's color.\n\n        [sref:`hidden`]:                    layout.options.hidden\n        [sref:`theme.colors.text.primary`]: theme.colors.text.primary\n  author:\n    title: PR Author Column\n    description: Defines options for the author column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 5\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the username for the person who created the PR.\n\n        The heading for this column is ![styled:`Author`]().\n    properties:\n    default:\n      width: 15\n  authorIcon:\n    title: PR Author Role Icon\n    description: Defines options for the role icon for each PR in a PR section.\n    type: object\n    properties:\n      hidden:\n        title: Hide Author Role Icon\n        description: Specify whether the role icon for PR authors should be hidden from view.\n        schematize:\n          details: |\n            Set this value to `true` to hide the role icon for PR authors.\n        type: boolean\n    schematize:\n      weight: 6\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This setting affects display of the role icon for the person who created the PR.\n  assignees:\n    title: PR Assignees Column\n    description: Defines options for the assignees column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 7\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the usernames for the people assigned to the PR.\n\n        The heading for this column is ![styled:`Assignees`]().\n    default:\n      width: 20\n      hidden: true\n  base:\n    title: PR Base Column\n    description: Defines options for the base column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 8\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the base branch the PR is targeting, like ![styled:`main`]().\n\n        The heading for this column is ![styled:`Base`]().\n    default:\n      width: 15\n      hidden: true\n  reviewStatus:\n    title: PR Review Status Column\n    description: Defines options for the review status column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 9\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the review status of a PR as an icon:\n\n        - When the PR hasn't been reviewed, the icon is ![styled:``](. \"faint-text\") and the\n          color is the value of [sref:`theme.colors.text.faint`].\n        - When the PR is approved, the icon is ![styled:`󰄬`](. \"primary-text\") and the color is\n          the value of [sref:`theme.colors.text.primary`].\n        - When the PR has requested changes, the icon is ![styled:`󰌑`](. \"warning-text\") and the\n          color is the value of [sref:`theme.colors.text.warning`].\n\n        The heading for this column is ![styled:`󰯢`]().\n\n        [sref:`theme.colors.text.faint`]:   theme.colors.text.faint\n        [sref:`theme.colors.text.primary`]: theme.colors.text.primary\n        [sref:`theme.colors.text.warning`]: theme.colors.text.warning\n  ci:\n    title: PR Continuous Integration Column\n    description: Defines options for the ci column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 10\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the CI status of a PR as an icon:\n\n        - When the checks haven't finished running, the icon is ![styled:``](. \"faint-text\") and\n          the color is the value of [sref:`theme.colors.text.faint`].\n        - When the checks have all passed, the icon is ![styled:``](. \"success-text\") and the\n          color is the value of [sref:`theme.colors.text.success`].\n        - When at least one check failed, the icon is ![styled:`󰅙`](. \"warning-text\") and the\n          color is the value of [sref:`theme.colors.text.warning`].\n\n        The heading for this column is ![styled:``]().\n\n        [sref:`theme.colors.text.faint`]:   theme.colors.text.faint\n        [sref:`theme.colors.text.success`]: theme.colors.text.success\n        [sref:`theme.colors.text.warning`]: theme.colors.text.warning\n  lines:\n    title: PR Lines Column\n    description: Defines options for the lines column in a PR section.\n    type: object\n    oneOf:\n      - $ref: ./options.yaml\n    schematize:\n      weight: 11\n      skip_schema_render: true\n      format: yaml\n      details: |\n        This column displays the line changes for a PR. The column represents the changes as\n        `<added> / -<removed>`. For example, ![styled:`66 / -46`]() indicates 66 lines added and 46\n        lines removed.\n\n        The heading for this column is ![styled:``]().\n    default:\n      width: 16\n"
  },
  {
    "path": "docs/src/data/schemas/pr-section.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: pr-section.schema.yaml\ntitle: PR Section Options\ndescription: Defines a section in the dashboard's PRs view.\ntype: object\nschematize:\n  details: |\n    Defines a section in the dashboard's PRs view.\n\n    Every section must define a [sref:`title`] and [sref:`filters`].\n\n    When you define [sref:`limit`] for a section, that value overrides the\n    [sref:`defaults.prsLimit`] setting.\n\n    When you define [sref:`layout`] for a section, that value overrides the\n    [sref:`defaults.layout.pr`] setting.\n\n    [sref:`title`]:              pr-section.title\n    [sref:`filters`]:            pr-section.filters\n    [sref:`limit`]:              pr-section.limit\n    [sref:`layout`]:             pr-section.layout\n    [sref:`defaults.prsLimit`]:  defaults.prsLimit\n    [sref:`defaults.layout.pr`]: defaults.layout.pr\nrequired:\n  - title\n  - filters\nproperties:\n  title:\n    title: PR Title\n    description: Defines the section's name as displayed in the tabs for the PRs view.\n    type: string\n    schematize:\n      weight: 1\n      details: |\n        This setting defines the section's name. The dashboard displays this value in the tabs for\n        the PRs view.\n  filters:\n    title: PR Filters\n    description: Defines the GitHub search filters for the PRs in the section's table.\n    type: string\n    schematize:\n      weight: 2\n      details: |\n        This setting defines the [GitHub search filters][01] for the PRs in the section's table.\n\n        Don't specify `is:pr` for this setting. The dashboard always adds that filter for PR\n        sections.\n\n        You can define any combination of search filters. To make it easier to read and maintain\n        your filters, we recommend using the `>-` syntax after the `filter` key and writing one\n        filter per line.\n\n        For example:\n\n        ```yaml\n        - title: Involved\n          filter: >-\n            is:open\n            involves:@me\n            -author:@me\n            updated:>={{ nowModify \"-2w\" }}\n        ```\n\n        For more information about writing filters for searching GitHub, see [Searching].\n\n        [Searching]: /configuration/searching\n  layout:\n    $ref: ./layout/pr.yaml\n    schematize:\n      weight: 3\n  limit:\n    title: PR Fetch Limit\n    type: integer\n    minimum: 1\n    schematize:\n      weight: 4\n      details: |\n        This setting defines how many PRs the dashboard should fetch for the section when:\n\n        - The dashboard first loads.\n        - The [sref:fetch interval] elapses.\n        - You navigate to the next issue in a table without another fetched issue to display.\n        - You use the [refresh current section] or [refresh all sections] commands.\n\n        This setting overrides the [sref:`defaults.issuesLimit`] setting.\n\n        [sref:fetch interval]:     defaults.fetchIntervalMinutes\n        [refresh current section]: /getting-started/keybindings/global/#refresh-current-section\n        [refresh all sections]:    /getting-started/keybindings/global/#refresh-all-sections\n        [sref:`defaults.issuesLimit`]: defaults.prsLimit\n"
  },
  {
    "path": "docs/src/data/schemas/theme.yaml",
    "content": "# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema\n$schema: https://json-schema.org/draft/2020-12/schema\n$id: theme.schema.yaml\ntitle: Theme Options\ndescription: Theme settings for gh-dash\ntype: object\nschematize:\n  format: yaml\n  details: |\n    This setting defines the dashboard's theme. It only effects the presentation of the dashboard,\n    not the data. Currently, the theme only defines colors and icons. To control how table columns\n    and preview pane display for the views, use the [sref:`defaults`], [sref:`prSections`], and\n    [sref:`issueSections`] settings.\n\n    ```alert\n    ---\n    variant: primary\n    ---\n    The default colors for the theme in the schema are for dark mode terminals. The dashboard\n    actually has different defaults for light mode terminals, but the schema can't represent a\n    dynamic default. The informational text for each color also enumerates the light mode color.\n    ```\n\n    To define any color for your dashboard, you **must** define **every** color. All properties are\n    required properties. Every color for the dashboard's theme must be a valid [hex color] like\n    `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n\n    To find hex colors to use in your dashboard, visit [`color-hex.com`]. You can browse colors,\n    inspect a given color, get alternate shades and tints for a color, derive a color palette, and\n    more.\n\n    [sref:`defaults`]:      defaults\n    [sref:`prSections`]:    gh-dash.prSections\n    [sref:`issueSections`]: gh-dash.issueSections\n    [hex color]:            https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color\n    [`color-hex.com`]:      https://www.color-hex.com/\nrequired:\n  - colors\nproperties:\n  ui:\n    title: UI Settings\n    type: object\n    properties:\n      table:\n        title: Table Settings\n        type: object\n        schematize:\n          skip_schema_render: true\n          format: yaml\n        properties:\n          sectionsShowCount:\n            title: Sections Show Count\n            description: >-\n              Whether the number of results show up next to each section's title in the tab bar.\n            type: boolean\n            default: true\n            schematize:\n              skip_schema_render: true\n              format: yaml\n          showSeparators:\n            title: Show Separators\n            description: >-\n              Whether to show the separators between lines in the prs/issues tables.\n            type: boolean\n            default: true\n            schematize:\n              skip_schema_render: true\n              format: yaml\n          compact:\n            title: Compact\n            description: >-\n              Whether to show table rows in a compact way or not\n            type: boolean\n            default: false\n            schematize:\n              skip_schema_render: true\n              format: yaml\n  icons:\n    title: Theme Icons\n    description: Defines the author-role icons for the dashboard.\n    type: object\n    schematize:\n      skip_schema_render: true\n      weight: 2\n      details: |\n        This setting defines a map of author-role icons for the dashboard.\n    properties:\n      newcontributor:\n        title: New Contributor Role Icon\n        description: >-\n          Specifies the character to use as the new-contributor-role icon.\n        schematize:\n          weight: 1\n        type: string\n      contributor:\n        title: Contributor Role Icon Color\n        description: >-\n          Specifies the character to use as the contributor-role icon.\n        schematize:\n          weight: 2\n        type: string\n      collaborator:\n        title: Collaborator Role Icon Color\n        description: >-\n          Specifies the character to use as the collaborator-role icon.\n        schematize:\n          weight: 3\n        type: string\n      member:\n        title: Member Role Icon Color\n        description: >-\n          Specifies the character to use as the member-role icon.\n        schematize:\n          weight: 4\n        type: string\n      owner:\n        title: Owner Role Icon Color\n        description: >-\n          Specifies the character to use as the owner-role icon.\n        schematize:\n          weight: 5\n        type: string\n      unknownrole:\n        title: Unknown Role Icon Color\n        description: >-\n          Specifies the character to use as the unknown-role icon.\n        schematize:\n          weight: 6\n        type: string\n  colors:\n    title: Theme Colors\n    description: Defines text, background, and border colors for the dashboard.\n    type: object\n    schematize:\n      skip_schema_render: true\n      weight: 3\n      details: |\n        This setting defines a map of colors for the dashboard's text, background, and border\n        colors.\n\n        The following elements can't be styled through your configuration and have their colors\n        set as:\n\n        |                 Element                 |          Color           |\n        | :-------------------------------------- | :----------------------: |\n        | Search input terms when inactive        | Terminal default (faint) |\n        | Search input terms when active          |     Terminal default     |\n        | Inactive section names in the tab list  |     Terminal default     |\n        | The status icon for open issues and PRs |        `#42A0FA`         |\n        | The status icon for closed issues       |        `#C38080`         |\n        | The status icon for closed PRs          |        `#C38080`         |\n        | The status icon for merged PRs          |        `#A371F7`         |\n      format: yaml\n    required:\n      - text\n      - background\n      - border\n    properties:\n      text:\n        title: Text Colors\n        description: >-\n          Defines the foreground (text) colors for the dashboard.\n        type: object\n        schematize:\n          weight: 1\n          skip_schema_render: true\n          format: yaml\n        required:\n          - primary\n          - secondary\n          - inverted\n          - faint\n          - warning\n          - success\n        properties:\n          primary:\n            title: Primary Text Color\n            description: >-\n              Specifies the color for active text. Must be a valid hex color like `#a3c` or\n              `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 1\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - The active section's name in the tab list\n                - The active view's name\n                - The column headers for the section's table of work items\n                - Open work item entries in the table except when a column's icon has an alternate\n                  color.\n                - The keybindings in the help view\n                - The title of the work item in the preview pane heading\n                - The comments and checks headers in the preview pane.\n                - The username for comment authors in the preview pane.\n\n                The default for dark mode terminals is ![styled:`#ffffff`][dark]. The default for\n                light mode terminals is black ![styled:`#000000`][light].\n\n                [dark]:  . \"primary-text dark\"\n                [light]: . \"primary-text light\"\n            type: string\n            default: \"#ffffff\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          secondary:\n            title: Secondary Text Color\n            description: >-\n              Specifies the color for important text. Must be a valid hex color like `#a3c` or\n              `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 2\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - The search icon, `is:pr`, and `is:issue` components of the search bar\n                - The inactive view's name\n                - The work item number in the table entries\n                - The work item number and repository name in the preview pane heading\n                - The base and target branch in the preview pane for PRs\n\n                The default for dark mode terminals is ![styled:`#c6c6c6`][dark]. The default for\n                light mode terminals is ![styled:`#808080`][light].\n\n                [dark]:  . \"secondary-text dark\"\n                [light]: . \"secondary-text light\"\n            type: string\n            default: \"#c6c6c6\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          inverted:\n            title: Inverted Text Color\n            description: >-\n              Specifies the color for text on an inverted background. Must be a valid hex color\n              like `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 3\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - The work item status in the preview pane\n                - Work item labels\n\n                The default for dark mode terminals is ![styled:`#303030`][dark]. The default for\n                light mode terminals is ![styled:`#ffffff`][light].\n\n                [dark]:  . \"inverted-text dark\"\n                [light]: . \"inverted-text light\"\n            type: string\n            default: \"#303030\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          faint:\n            title: Faint Text Color\n            description: >-\n              Specifies the color for informational text. Must be a valid hex color like `#a3c` or\n              `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 4\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - Closed work item entries in the table\n                - The current time, active/total work item count, and fetched work item count\n                  beneath the table\n                - The help text for the keybinding commands\n                - The percentage scrolled at the bottom of the preview pane\n                - The date/time information on comments in the preview pane\n                - The review status icon when a PR is waiting for a review\n\n                The default for dark mode terminals is ![styled:`#8a8a8a`][dark]. The default for\n                light mode terminals is ![styled:`#c0c0c0`][light].\n\n                [dark]:  . \"faint-text dark\"\n                [light]: . \"faint-text light\"\n            type: string\n            default: \"#8a8a8a\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          warning:\n            title: Warning Text Color\n            description: >-\n              Specifies the color for warning or error text. Must be a valid hex color like `#a3c`\n              or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 5\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - The icon for the `reviewStatus` column's icon when a PR has requested changes\n                - The icon for the `ci` column's icon when a PR has failing checks\n                - The icon for failing checks for PRs in the preview pane\n                - Error messages for commands, like when the dashboard fails to fetch work items.\n\n                The default for dark mode terminals is ![styled:`#800000`][dark]. The default for\n                light mode terminals is ![styled:`#800000`][light].\n\n                [dark]:  . \"warning-text dark\"\n                [light]: . \"warning-text light\"\n            type: string\n            default: \"#800000\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          success:\n            title: Success Text Color\n            description: >-\n              Specifies the color for success text. Must be a valid hex color like `#a3c` or\n              `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 6\n              details: |\n                This setting determines the color of the text for the following elements in the\n                dashboard UI:\n\n                - The icon for the `reviewStatus` column's icon when a PR is approved\n                - The icon for the `ci` column's icon when a PR's checks are all passing\n                - The icon for passing checks for PRs in the preview pane\n                - Success messages for commands, like when the dashboard fetches work items.\n\n                The default for dark mode terminals is ![styled:`#008000`][dark]. The default for\n                light mode terminals is ![styled:`#008000`][light].\n\n                [dark]:  . \"success-text dark\"\n                [light]: . \"success-text light\"\n            type: string\n            default: \"#008000\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n      background:\n        title: Background Colors\n        description: Defines the background colors for the dashboard.\n        type: object\n        schematize:\n          weight: 2\n          skip_schema_render: true\n          details: |\n            Defines the background colors for the dashboard. By default, the background color for\n            all elements in the dashboard UI is the terminal's background color.\n          format: yaml\n        required:\n          - selected\n        properties:\n          selected:\n            title: Selected Background Color\n            description: >-\n              Defines the background color for selected items. Must be a valid hex color like\n              `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 1\n              details: |\n                This setting determines the background color for the following elements in the\n                dashboard UI:\n\n                - The active section's name in the tab list\n                - The active view's name\n                - The active entry in the section's work item table.\n\n                The default for dark mode terminals is ![styled:`#808080`][dark]. The default for\n                light mode terminals is ![styled:`#c0c0c0`][light].\n\n                [dark]:  . \"selected-background dark\"\n                [light]: . \"selected-background light\"\n            type: string\n            default: \"#808080\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n      border:\n        title: Border Colors\n        description: Defines the border colors for the dashboard.\n        type: object\n        schematize:\n          weight: 3\n          skip_schema_render: true\n          format: yaml\n        required:\n          - primary\n          - secondary\n          - faint\n        properties:\n          primary:\n            title: Primary Border Color\n            description: >-\n              Defines the border color for primary elements. Must be a valid hex color like\n              `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 1\n              details: |\n                This setting determines the color for the following elements in the dashboard UI:\n\n                - The border beneath the section tabs\n                - The border around the search input\n                - The border between the table and the preview pane\n                - The border above the command help info\n\n                The default for dark mode terminals is ![styled:`#808080`][dark]. The default for\n                light mode terminals is ![styled:`#ff00ff`][light].\n\n                [dark]:  . \"primary-border dark\"\n                [light]: . \"primary-border light\"\n            type: string\n            default: \"#808080\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          secondary:\n            title: Secondary Border Color\n            description: >-\n              Defines the border color for secondary elements. Must be a valid hex color like\n              `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 2\n              details: |\n                This setting determines the color for the following elements in the dashboard UI:\n\n                - The borders that separate the sections in the tab list\n\n                The default for dark mode terminals is ![styled:`#c0c0c0`][dark]. The default for\n                light mode terminals is ![styled:`#808080`][light].\n\n                [dark]:  . \"secondary-border dark\"\n                [light]: . \"secondary-border light\"\n            type: string\n            default: \"#c0c0c0\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          faint:\n            title: Faint Border Color\n            description: >-\n              Defines the border color between rows in the table. Must be a valid hex color like\n              `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\n            schematize:\n              weight: 3\n              details: |\n                This setting determines the color for the following elements in the dashboard UI:\n\n                - The border between rows in the table\n\n                The default for dark mode terminals is ![styled:`#000000`][dark]. The default for\n                light mode terminals is ![styled:`#e4e4e4`][light].\n\n                [dark]:  . \"faint-border dark\"\n                [light]: . \"faint-border light\"\n            type: string\n            default: \"#000000\"\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n      icon:\n        title: Icon Colors\n        description: >-\n          Defines author-role icon colors for the dashboard.\n        type: object\n        schematize:\n          weight: 4\n          skip_schema_render: true\n          format: yaml\n        properties:\n          newcontributor:\n            title: New Contributor Role Icon Color\n            description: >-\n              Specifies the icon color for the new-contributor-role icon.\n            schematize:\n              weight: 1\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          contributor:\n            title: Contributor Role Icon Color\n            description: >-\n              Specifies the icon color for the contributor-role icon.\n            schematize:\n              weight: 2\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          collaborator:\n            title: Collaborator Role Icon Color\n            description: >-\n              Specifies the icon color for the collaborator-role icon.\n            schematize:\n              weight: 3\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          member:\n            title: Member Role Icon Color\n            description: >-\n              Specifies the icon color for the member-role icon.\n            schematize:\n              weight: 4\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          owner:\n            title: Owner Role Icon Color\n            description: >-\n              Specifies the icon color for the owner-role icon.\n            schematize:\n              weight: 5\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\n          unknownrole:\n            title: Unknown Role Icon Color\n            description: >-\n              Specifies the icon color for the unknown-role icon.\n            schematize:\n              weight: 6\n            type: string\n            pattern: ^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\ndefault:\n  ui:\n    sectionsShowCount: true\n    table:\n      showSeparators: true\n      compact: false\n  colors:\n    text:\n      primary: \"#ffffff\"\n      secondary: \"#c6c6c6\"\n      inverted: \"#303030\"\n      faint: \"#8a8a8a\"\n      warning: \"#800000\"\n      success: \"#008000\"\n    background:\n      selected: \"#808080\"\n    border:\n      primary: \"#808080\"\n      secondary: \"#c0c0c0\"\n      faint: \"#000000\"\n"
  },
  {
    "path": "docs/src/data/sponsorshipGoal.ts",
    "content": "const GH_TOKEN = import.meta.env.GH_TOKEN;\n\nexport const getSponsorshipGoal = async () => {\n  const query = `query { user(login:\\\"dlvhdr\\\") { monthlyEstimatedSponsorsIncomeInCents } }`;\n\n  const response = await fetch(\"https://api.github.com/graphql\", {\n    method: \"POST\",\n    body: JSON.stringify({ query }),\n    headers: {\n      Authorization: `bearer ${GH_TOKEN}`,\n    },\n  });\n\n  if (response.status != 200) {\n    return await response\n      .json()\n      .then((res) => {\n        console.error(\"failed fetching sponsorship goal\", {\n          status: response.status,\n          json: res,\n        });\n        return {\n          data: { user: { monthlyEstimatedSponsorsIncomeInCents: 4000 } },\n        };\n      })\n      .catch((e) => {\n        console.error(\"failed deseralizing response\", e);\n        return {\n          data: { user: { monthlyEstimatedSponsorsIncomeInCents: 4000 } },\n        };\n      });\n  }\n\n  const data: {\n    data: { user: { monthlyEstimatedSponsorsIncomeInCents: number } };\n  } = await response.json();\n\n  return data;\n};\n"
  },
  {
    "path": "docs/src/data/stars.ts",
    "content": "const GH_TOKEN = import.meta.env.GH_TOKEN;\n\nexport const getStars = async () => {\n  const response = await fetch(\"https://api.github.com/repos/dlvhdr/gh-dash\", {\n    method: \"GET\",\n    headers: {\n      Authorization: `bearer ${GH_TOKEN}`,\n    },\n  });\n\n  if (response.status != 200) {\n    return { stargazers_count: 8700 };\n  }\n\n  const data: { stargazers_count: number } = await response.json();\n\n  return data;\n};\n"
  },
  {
    "path": "docs/src/fonts/font-face.css",
    "content": "@font-face {\n  font-family: \"MyFallbackFont\";\n  /* Courier New closely matches CommitMono */\n  src: local(\"Courier New\");\n\n  /* formula = 900 / 10 = 90% */\n  ascent-override: 90%;\n\n  /* formula = 200 / 10 = 20% */\n  descent-override: 20%;\n}\n\n@font-face {\n  font-family: \"CommitMono\";\n  font-weight: normal;\n  font-style: normal;\n  src: url(\"./CommitMono-400-Regular.otf\") format(\"opentype\");\n  font-display: swap;\n}\n"
  },
  {
    "path": "docs/src/pages/enhance.astro",
    "content": "---\nimport StarlightPage from \"@astrojs/starlight/components/StarlightPage.astro\";\nimport \"../styles/index.css\";\nimport Footer from \"../components/Footer.astro\";\nimport Logo from \"../components/Logo.astro\";\nimport Terminal from \"../components/Terminal.astro\";\nimport Discord from \"../components/Discord.astro\";\nimport Box from \"../components/Box.astro\";\nimport Showcase from \"../components/Showcase.astro\";\nimport { Image } from \"astro:assets\";\nimport prSectionsImage from \"../assets/pr-sections.png\";\nimport FadeImages from \"../components/FadeImages.astro\";\nimport draculaSrc from \"../assets/enhance-dracula.png\";\nimport gruvboxSrc from \"../assets/enhance-gruvbox_dark.png\";\nimport nordSrc from \"../assets/enhance-nord.png\";\nimport Hero from \"../components/Hero.astro\";\nimport EnhanceLogo from \"../components/EnhanceLogo.astro\";\nimport SupportSection from \"../components/SupportSection.astro\";\n---\n\n<style is:global>\n  h1#_top {\n    display: none;\n  }\n</style>\n\n<StarlightPage frontmatter={{ title: \"ENHANCE\", template: \"splash\" }}>\n  <div id=\"_top\"></div>\n  <div class=\"mt-0 2xl:mt-12\">\n    <Hero\n      tagline=\"A Blazingly Fast Terminal UI for GitHub Actions\"\n      videoUrl=\"enhance-demo\"\n      githubUrl=\"https://github.com/dlvhdr/gh-enhance\"\n      getStartedUrl=\"/companions/enhance/getting-started/\"\n    >\n      <EnhanceLogo />\n    </Hero>\n  </div>\n\n  <div class=\"mt-12 text-[var(--sl-color-gray-5)]\">──◇──</div>\n\n  <SupportSection />\n\n  <div class=\"mt-16 mb-16 text-[var(--sl-color-gray-5)]\">──◇──</div>\n\n  <div class=\"lg:w-80rem flex w-[95vw] flex-col items-center gap-8 lg:gap-16\">\n    <Showcase>\n      <Box icon=\"approve-check-circle\" header=\"Watch Action Runs\">\n        <p>\n          Automatically watch runs that are in progress and get notified when\n          they are done\n        </p>\n      </Box>\n      <Terminal className=\"w-[95vw] lg:w-[800px]\" title=\"gh enhance\">\n        <video autoplay loop muted playsinline>\n          <source src=\"/watch.webm\" type=\"video/webm\" />\n          <source src=\"/watch.mp4\" type=\"video/mp4\" />\n        </video>\n      </Terminal>\n    </Showcase>\n    <Showcase reversed={true}>\n      <Box icon=\"right-arrow\" header=\"Rerun Failed Actions\">\n        Rerunning flaky CI jobs has never been easier! Press <kbd>Ctrl</kbd\n        >+<kbd>R</kbd> to rerun and watch it succeed (hopefully! 🤞)\n      </Box>\n      <Terminal className=\"w-[95vw] lg:w-[800px]\" title=\"gh enhance\">\n        <video autoplay loop muted playsinline>\n          <source src=\"/rerun.webm\" type=\"video/webm\" />\n          <source src=\"/rerun.mp4\" type=\"video/mp4\" />\n        </video>\n      </Terminal>\n    </Showcase>\n    <Showcase reversed={true}>\n      <Box icon=\"list-format\" header=\"And more!\" src={prSectionsImage}>\n        <ul>\n          <li>\n            <div class=\"mb-0 flex items-center\">\n              Easily integrates with <Logo className=\"ml-3 text-[6px]\" />\n            </div>\n          </li>\n          <li>Native Vim keybindings</li>\n          <li>Use custom themes</li>\n          <li>Easily filter runs, jobs and logs</li>\n          <li>More features coming soon!</li>\n        </ul>\n      </Box>\n      <Terminal className=\"lg:w-[800px]\" title=\"gh enhance\">\n        <FadeImages>\n          <Image\n            src={gruvboxSrc}\n            alt=\"Enhance running with the gruvbox theme\"\n          />\n          <Image src={nordSrc} alt=\"Enhance running with the nord theme\" />\n          <Image\n            src={draculaSrc}\n            alt=\"Enhance running with the dracula theme\"\n          />\n        </FadeImages>\n      </Terminal>\n    </Showcase>\n  </div>\n\n  <Discord class=\"mt-20\" />\n  <Footer class=\"mt-20\" isCommunity={false} />\n</StarlightPage>\n"
  },
  {
    "path": "docs/src/pages/index.astro",
    "content": "---\nimport StarlightPage from \"@astrojs/starlight/components/StarlightPage.astro\";\nimport \"../styles/index.css\";\nimport { Code, Icon } from \"@astrojs/starlight/components\";\nimport Terminal from \"../components/Terminal.astro\";\nimport Footer from \"../components/Footer.astro\";\nimport Box from \"../components/Box.astro\";\nimport Showcase from \"../components/Showcase.astro\";\nimport Discord from \"../components/Discord.astro\";\nimport FadeImages from \"../components/FadeImages.astro\";\nimport prSectionsImage from \"../assets/pr-sections.png\";\nimport { Image } from \"astro:assets\";\nimport helpSrc from \"../assets/help.png\";\nimport tokyonightSrc from \"../assets/tokyo.png\";\nimport catppuccinSrc from \"../assets/catpuccin.png\";\nimport gruvSrc from \"../assets/gruv.png\";\nimport charmVidPreviewSrc from \"../assets/charm-vid-preview.jpg\";\nimport EnhanceCard from \"../components/EnhanceCard.astro\";\nimport DiffnavCard from \"../components/DiffnavCard.astro\";\nimport DashHeroLogo from \"../components/DashHeroLogo.astro\";\nimport Hero from \"../components/Hero.astro\";\nimport SupportSection from \"../components/SupportSection.astro\";\n---\n\n<style is:global>\n  h1#_top {\n    display: none;\n  }\n</style>\n\n<StarlightPage\n  frontmatter={{ title: \"DASH Through Your GitHub\", template: \"splash\" }}\n>\n  <div class=\"mt-0 2xl:mt-12\">\n    <Hero\n      tagline=\"A rich terminal UI for GitHub that doesn't break your flow\"\n      videoUrl=\"overview\"\n      githubUrl=\"https://github.com/dlvhdr/gh-dash\"\n      getStartedUrl=\"/getting-started/\"\n    >\n      <DashHeroLogo />\n    </Hero>\n  </div>\n  <div class=\"mt-12 text-[var(--sl-color-gray-5)]\">──◇──</div>\n\n  <h2 class=\"mt-8 mb-12 text-center !text-3xl\">Companion Apps</h2>\n\n  <div\n    class=\"grid w-full grid-cols-[repeat(auto-fit,_minmax(20em,_30em))] justify-center gap-6 overflow-hidden\"\n  >\n    <EnhanceCard />\n    <DiffnavCard />\n  </div>\n\n  <div\n    class=\"absolute top-[90vh] right-32 hidden h-10 animate-bounce rounded-2xl border border-gray-700 p-1 text-[var(--sl-color-accent)] lg:block\"\n  >\n    <div>⌄</div>\n    <div class=\"relative -top-8 mt-0\">⌄</div>\n  </div>\n\n  <div class=\"mt-12 text-[var(--sl-color-gray-5)]\">──◇──</div>\n\n  <SupportSection />\n\n  <div class=\"mt-16 mb-8 text-[var(--sl-color-gray-5)]\">──◇──</div>\n\n  <h2 class=\"mb-16 !text-3xl\">Features</h2>\n\n  <div class=\"lg:w-80rem flex w-[95vw] flex-col items-center gap-8 lg:gap-16\">\n    <Showcase>\n      <Box icon=\"setting\" header=\"Define Custom GitHub Filters\">\n        <Code\n          class=\"overflow-auto\"\n          lang=\"yaml\"\n          code={`prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me\n  - title: Needs My Review\n    filters: is:open review-requested:@me\nissuesSections:\n  - title: Ghostty\n    filters: is:open ghostty-org/ghostty\n  - title: Neovim\n    filters: is:open neovim/neovim\n`}\n        />\n      </Box>\n      <Terminal className=\"w-[95vw] lg:w-[800px]\">\n        <video autoplay loop muted playsinline>\n          <source src=\"/sections.webm\" type=\"video/webm\" />\n          <source src=\"/sections.mp4\" type=\"video/mp4\" />\n        </video>\n      </Terminal>\n    </Showcase>\n    <Showcase reversed={true}>\n      <Box icon=\"vim\" header=\"Native Vim Keybindings\" src={prSectionsImage}>\n        <ul>\n          <li><kbd>h/j/k/l</kbd> to move between rows/sections</li>\n          <li><kbd>ctrl+d/u</kbd> to move in sidebar</li>\n          <li><kbd>o</kbd> to open in browser</li>\n          <li><kbd>y/Y</kbd> to copy pr number/url</li>\n          <li>and more...</li>\n        </ul>\n      </Box>\n      <div\n        class=\"relative m-0 box-border h-[200px] w-[95vw] overflow-hidden border border-[var(--sl-color-gray-5)] bg-[#010101] lg:h-[300px] lg:w-[800px]\"\n      >\n        <div\n          class=\"animate-bannermove absolute top-16 left-0 flex gap-0 whitespace-nowrap\"\n        >\n          <Image\n            class=\"my-0 scale-160\"\n            src={helpSrc}\n            alt=\"screenshot of dash with the help menu open, you can see all the keybindings for PRs and what they do.\"\n          />\n          <Image\n            class=\"my-0 scale-160\"\n            src={helpSrc}\n            aria-hidden={true}\n            alt=\"duplicate image for marquee effect\"\n          />\n        </div>\n      </div>\n    </Showcase>\n    <Showcase>\n      <Box icon=\"laptop\" header=\"Set Custom Commands\" src={prSectionsImage}>\n        <Code\n          lang=\"yaml\"\n          code={`- key: g\n  name: laygit\n  command: lazygit\n- key: C\n  name: code review\n  command: >\n    tmux new-window -c {{.RepoPath}}\n    'nvim -c\n    \":silent Octo pr edit {{.PrNumber}}\"'\n        `}\n        />\n      </Box>\n      <Terminal>\n        <video autoplay loop muted playsinline class=\"w-[95vw] lg:w-[800px]\">\n          <source src=\"/custom-commands.webm\" type=\"video/webm\" />\n          <source src=\"/custom-commands.mp4\" type=\"video/mp4\" />\n        </video>\n      </Terminal>\n    </Showcase>\n    <Showcase reversed={true}>\n      <Box icon=\"sun\" header=\"Use Custom Themes\" src={prSectionsImage}>\n        <Code\n          lang=\"yaml\"\n          code={`ui:\n  sectionsShowCount: true\ntable:\n  showSeparators: true\n  compact: false\ncolors:\n  text:\n    primary: \"#ffffff\"\n    secondary: \"#c6c6c6\"\n# rest of theme...`}\n        />\n      </Box>\n      <Terminal className=\"lg:w-[800px]\">\n        <FadeImages>\n          <Image\n            src={catppuccinSrc}\n            alt=\"Dash running with the catppuccin theme\"\n          />\n          <Image src={gruvSrc} alt=\"Dash running with the gruvbox theme\" />\n          <Image\n            src={tokyonightSrc}\n            alt=\"Dash running with the tokyo-night theme\"\n          />\n        </FadeImages>\n      </Terminal>\n    </Showcase>\n  </div>\n  <div class=\"mt-16 flex flex-col items-center\">\n    <h2 class=\"mb-2\">Why use DASH?</h2>\n    <p class=\"mb-6 text-center lg:w-[60ch]\">\n      Check out this 10/10 video by <a href=\"https://charm.sh\">Charm ✨</a> explaining\n      how DASH can help you manage your GitHub experience\n    </p>\n    <a href=\"https://www.youtube.com/watch?v=5omFxcNjBQk&t\" target=\"_blank\">\n      <Image\n        src={charmVidPreviewSrc}\n        alt=\"YouTube video - Manage open source like a boss (in the terminal)\"\n        class=\"w-[95vw] lg:w-[800px]\"\n      />\n    </a>\n  </div>\n  <div class=\"mt-16 text-[var(--sl-color-gray-5)]\">──◇──</div>\n  <Discord class=\"mt-20\" />\n  <Footer class=\"mt-20\" />\n</StarlightPage>\n"
  },
  {
    "path": "docs/src/pages/robots.txt.ts",
    "content": "import type { APIRoute } from \"astro\";\n\nconst getRobotsTxt = (sitemapURL: URL) => `\\\nUser-agent: *\nAllow: /\n\nSitemap: ${sitemapURL.href}\n`;\n\nexport const GET: APIRoute = ({ site }) => {\n  const sitemapURL = new URL(\"sitemap-index.xml\", site);\n  return new Response(getRobotsTxt(sitemapURL));\n};\n"
  },
  {
    "path": "docs/src/pages/schema/defaults.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"defaults.schema.json\",\n      title: \"Default Options\",\n      description: \"Define options that can be overridden per-section.\",\n      type: \"object\",\n      default: {\n        preview: {\n          open: true,\n          width: 0.45,\n        },\n        prsLimit: 20,\n        prApproveComment: \"LGTM\",\n        issuesLimit: 20,\n        view: \"prs\",\n        refetchIntervalMinutes: 30,\n      },\n      properties: {\n        layout: {\n          title: \"Layout Options\",\n          description:\n            \"Defines the layout for the work item tables in the dashboard.\",\n          type: \"object\",\n          properties: {\n            prs: {\n              $ref: \"./layout/pr.json\",\n            },\n            issues: {\n              $ref: \"./layout/issue.json\",\n            },\n          },\n        },\n        prsLimit: {\n          title: \"PR Fetch Limit\",\n          description:\n            \"Global limit on the number of PRs fetched for the dashboard\",\n          type: \"integer\",\n          minimum: 1,\n          default: 20,\n        },\n        issuesLimit: {\n          title: \"Issue Fetch Limit\",\n          description:\n            \"Global limit on the number of issues fetched for the dashboard\",\n          type: \"integer\",\n          minimum: 1,\n          default: 20,\n        },\n        preview: {\n          title: \"Preview Pane\",\n          description: \"Defaults for the preview pane\",\n          type: \"object\",\n          properties: {\n            open: {\n              title: \"Open on Load\",\n              description:\n                \"Whether to have the preview pane open by default when the dashboard loads.\",\n              type: \"boolean\",\n              default: true,\n            },\n            width: {\n              title: \"Preview Pane Width\",\n              description:\n                \"Specifies the width of the preview pane. Numbers between 0 and 1 represent size relative to overall terminal window size (e.g 0.4 is 40%), numbers >=1 represent size in columns.\",\n              type: \"number\",\n              minimum: 0,\n              default: 0.45,\n            },\n          },\n        },\n        refetchIntervalMinutes: {\n          title: \"Refetch Interval in Minutes\",\n          description:\n            \"Specifies how often to refetch PRs and Issues in minutes.\",\n          type: \"integer\",\n          minimum: 0,\n          default: 30,\n        },\n        dateFormat: {\n          title: \"Date format\",\n          description: \"Specifies how dates are formatted.\",\n          type: \"integer\",\n          minimum: 1,\n          default: 30,\n        },\n        view: {\n          title: \"Default View\",\n          description:\n            \"Specifies whether the dashboard should display the PRs or Issues view on load.\",\n          type: \"string\",\n          enum: [\"issues\", \"prs\"],\n          default: \"prs\",\n        },\n        prApproveComment: {\n          title: \"PR Approve Comment\",\n          description: \"The default comment prefilled when approving a PR.\",\n          type: \"string\",\n          default: \"LGTM\",\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/definitions/grow.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"grow.schema.json\",\n      title: \"Grow Column\",\n      description:\n        \"Select whether the column should grow to fill available space.\",\n      type: \"boolean\",\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/definitions/hexcolor.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"color.schema.json\",\n      title: \"Color\",\n      description:\n        \"Represents a valid color: either a hex color like `#a3c` or `#aa33cc`, or an ANSI color index from `0` to `255`.\",\n      type: \"string\",\n      format: \"color\",\n      pattern:\n        \"^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$\",\n      example: \"#aa33cc\",\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/issue-section.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"issue-section.schema.json\",\n      title: \"Issue Section Options\",\n      description: \"Defines a section in the dashboard's Issues view.\",\n      type: \"object\",\n      required: [\"title\", \"filters\"],\n      properties: {\n        title: {\n          title: \"Issue Title\",\n          description:\n            \"Defines the section's name as displayed in the tabs for the issues view.\",\n          type: \"string\",\n        },\n        filters: {\n          title: \"Issue Filters\",\n          description:\n            \"Defines the GitHub search filters for the issues in the section's table.\",\n          type: \"string\",\n        },\n        layout: { $ref: \"./layout/issue.json\", schematize: { weight: 3 } },\n        limit: {\n          title: \"Issue Fetch Limit\",\n          type: \"integer\",\n          minimum: 1,\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/keybindings/entry.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"entry.schema.json\",\n      title: \"Valid Keybinding Entry\",\n      description: \"A keybinding to run a shell command in a view.\",\n      type: \"object\",\n      required: [\"key\"],\n      properties: {\n        key: {\n          title: \"Bound Key\",\n          description: \"The combination of keys that trigger the command.\",\n          type: \"string\",\n        },\n        name: {\n          title: \"Command name\",\n          description: \"A descriptive name for the command\",\n          type: \"string\",\n        },\n        command: {\n          title: \"Bound Command\",\n          description:\n            \"The shell command that runs when you press the key combination.\",\n          type: \"string\",\n        },\n        builtin: {\n          title: \"Builtin Command\",\n          description:\n            \"One of gh-dash's builtin commands that will run when you press the key combination\",\n          type: \"string\",\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/keybindings/issues.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"issues.schema.json\",\n      title: \"Issues Commands\",\n      description: \"Keybindings for the Issues View\",\n      type: \"array\",\n      items: {\n        $ref: \"./entry.json\",\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/keybindings/prs.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"prs.schema.json\",\n      title: \"PRs Commands\",\n      description: \"Keybindings for the Pull Request View\",\n      type: \"array\",\n      items: {\n        $ref: \"./entry.json\",\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/layout/issue.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"issue.schema.json\",\n      title: \"Issue Section Layout\",\n      description:\n        \"Defines the columns an issue section displays in its table.\",\n      type: \"object\",\n      default: {\n        updatedAt: {\n          width: 7,\n        },\n        repo: {\n          width: 15,\n        },\n        creator: {\n          width: 10,\n        },\n        assignees: {\n          width: 20,\n          hidden: true,\n        },\n      },\n      properties: {\n        updatedAt: {\n          title: \"Issue Updated At Column\",\n          description:\n            \"Defines options for the updated at column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 7,\n          },\n        },\n        state: {\n          title: \"Issue State Column\",\n          description:\n            \"Defines options for the state column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        repo: {\n          title: \"Issue Repo Column\",\n          description:\n            \"Defines options for the repo column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 15,\n          },\n        },\n        title: {\n          title: \"Issue Title Column\",\n          description:\n            \"Defines options for the title column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        creator: {\n          title: \"Issue Creator Column\",\n          description:\n            \"Defines options for the creator column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 10,\n          },\n        },\n        creatorIcon: {\n          title: \"Issue Creator Role Icon\",\n          description:\n            \"Defines options for the role icon for each issue in an issue section.\",\n          type: \"object\",\n          properties: {\n            hidden: {\n              title: \"Hide Creator Icon\",\n              description:\n                \"Specify whether the role icon for issue creators should be hidden from view.\",\n              type: \"boolean\",\n            },\n          },\n        },\n        assignees: {\n          title: \"Issue Assignees Column\",\n          description:\n            \"Defines options for the assignees column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 20,\n            hidden: true,\n          },\n        },\n        comments: {\n          title: \"Issue Comments Column\",\n          description:\n            \"Defines options for the comments column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        reactions: {\n          title: \"Issue Reactions Column\",\n          description:\n            \"Defines options for the reactions column in an issue section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/layout/options.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"layout.options.schema.json\",\n      title: \"Valid Layout Options\",\n      type: \"object\",\n      properties: {\n        grow: {\n          title: \"Grow Column\",\n          description:\n            \"Select whether the column should grow to fill available space.\",\n          type: \"boolean\",\n        },\n        width: {\n          title: \"Column Width\",\n          description: \"Select the column's width by cell count.\",\n          type: \"integer\",\n          minimum: 0,\n        },\n        hidden: {\n          title: \"Hide Column\",\n          description: \"Select whether the column should be hidden from view.\",\n          type: \"boolean\",\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/layout/pr.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"pr.schema.json\",\n      title: \"PR Section Layout\",\n      description: \"Defines the columns a PR section displays in its table.\",\n      type: \"object\",\n      default: {\n        updatedAt: {\n          width: 7,\n        },\n        repo: {\n          width: 15,\n        },\n        author: {\n          width: 15,\n        },\n        assignees: {\n          width: 20,\n          hidden: true,\n        },\n        base: {\n          width: 15,\n          hidden: true,\n        },\n        lines: {\n          width: 16,\n        },\n      },\n      properties: {\n        updatedAt: {\n          title: \"PR Updated At Column\",\n          description:\n            \"Defines options for the updated at column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 7,\n          },\n        },\n        state: {\n          title: \"PR State Column\",\n          description: \"Defines options for the state column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        repo: {\n          title: \"PR Repo Column\",\n          description: \"Defines options for the repo column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 15,\n          },\n        },\n        title: {\n          title: \"PR Title Column\",\n          description: \"Defines options for the title column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        author: {\n          title: \"PR Author Column\",\n          description: \"Defines options for the author column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          properties: null,\n          default: {\n            width: 15,\n          },\n        },\n        authorIcon: {\n          title: \"PR Author Role Icon\",\n          description:\n            \"Defines options for the role icon for each PR in a PR section.\",\n          type: \"object\",\n          properties: {\n            hidden: {\n              title: \"Hide Author Role Icon\",\n              description:\n                \"Specify whether the role icon for PR authors should be hidden from view.\",\n              type: \"boolean\",\n            },\n          },\n        },\n        assignees: {\n          title: \"PR Assignees Column\",\n          description:\n            \"Defines options for the assignees column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 20,\n            hidden: true,\n          },\n        },\n        base: {\n          title: \"PR Base Column\",\n          description: \"Defines options for the base column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 15,\n            hidden: true,\n          },\n        },\n        numComments: {\n          title: \"Number of Comments Column\",\n          description:\n            \"Defines options for the number of comments column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        reviewStatus: {\n          title: \"PR Review Status Column\",\n          description:\n            \"Defines options for the review status column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        ci: {\n          title: \"PR Continuous Integration Column\",\n          description: \"Defines options for the ci column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n        },\n        lines: {\n          title: \"PR Lines Column\",\n          description: \"Defines options for the lines column in a PR section.\",\n          type: \"object\",\n          oneOf: [\n            {\n              $ref: \"./options.json\",\n            },\n          ],\n          default: {\n            width: 16,\n          },\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/pr-section.json.ts",
    "content": "// Outputs: /schema.json\nexport function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"pr-section.schema.json\",\n      title: \"PR Section Options\",\n      description: \"Defines a section in the dashboard's PRs view.\",\n      type: \"object\",\n      required: [\"title\", \"filters\"],\n      properties: {\n        title: {\n          title: \"PR Title\",\n          description:\n            \"Defines the section's name as displayed in the tabs for the PRs view.\",\n          type: \"string\",\n        },\n        filters: {\n          title: \"PR Filters\",\n          description:\n            \"Defines the GitHub search filters for the PRs in the section's table.\",\n          type: \"string\",\n        },\n        layout: {\n          $ref: \"./layout/pr.json\",\n        },\n        limit: {\n          title: \"PR Fetch Limit\",\n          type: \"integer\",\n          minimum: 1,\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema/theme.json.ts",
    "content": "// Outputs: /schema.json\nexport function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"theme.schema.json\",\n      title: \"Theme Options\",\n      description: \"Theme settings for gh-dash\",\n      type: \"object\",\n      required: [],\n      properties: {\n        ui: {\n          title: \"UI Settings\",\n          type: \"object\",\n          properties: {\n            table: {\n              title: \"Table Settings\",\n              type: \"object\",\n              properties: {\n                sectionsShowCount: {\n                  title: \"Sections Show Count\",\n                  description:\n                    \"Whether the number of results show up next to each section's title in the tab bar.\",\n                  type: \"boolean\",\n                  default: true,\n                },\n                showSeparators: {\n                  title: \"Show Separators\",\n                  description:\n                    \"Whether to show the separators between lines in the prs/issues tables.\",\n                  type: \"boolean\",\n                  default: true,\n                },\n                compact: {\n                  title: \"Compact\",\n                  description:\n                    \"Whether to show table rows in a compact way or not\",\n                  type: \"boolean\",\n                  default: false,\n                },\n              },\n            },\n          },\n        },\n        icons: {\n          title: \"Theme Icons\",\n          description: \"Defines the author-role icons for the dashboard.\",\n          type: \"object\",\n          properties: {\n            newcontributor: {\n              title: \"New Contributor Role Icon\",\n              description:\n                \"Specifies the character to use as the new-contributor-role icon.\",\n              type: \"string\",\n            },\n            contributor: {\n              title: \"Contributor Role Icon Color\",\n              description:\n                \"Specifies the character to use as the contributor-role icon.\",\n              type: \"string\",\n            },\n            collaborator: {\n              title: \"Collaborator Role Icon Color\",\n              description:\n                \"Specifies the character to use as the collaborator-role icon.\",\n              type: \"string\",\n            },\n            member: {\n              title: \"Member Role Icon Color\",\n              description:\n                \"Specifies the character to use as the member-role icon.\",\n              type: \"string\",\n            },\n            owner: {\n              title: \"Owner Role Icon Color\",\n              description:\n                \"Specifies the character to use as the owner-role icon.\",\n              type: \"string\",\n            },\n            unknownrole: {\n              title: \"Unknown Role Icon Color\",\n              description:\n                \"Specifies the character to use as the unknown-role icon.\",\n              type: \"string\",\n            },\n          },\n        },\n        colors: {\n          title: \"Theme Colors\",\n          description:\n            \"Defines text, background, and border colors for the dashboard.\",\n          type: \"object\",\n          required: [],\n          properties: {\n            text: {\n              title: \"Text Colors\",\n              description:\n                \"Defines the foreground (text) colors for the dashboard.\",\n              type: \"object\",\n              required: [],\n              properties: {\n                primary: {\n                  title: \"Primary Text Color\",\n                  description:\n                    \"Specifies the color for active text. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#ffffff\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                secondary: {\n                  title: \"Secondary Text Color\",\n                  description:\n                    \"Specifies the color for important text. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#c6c6c6\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                inverted: {\n                  title: \"Inverted Text Color\",\n                  description:\n                    \"Specifies the color for text on an inverted background. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#303030\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                faint: {\n                  title: \"Faint Text Color\",\n                  description:\n                    \"Specifies the color for informational text. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#8a8a8a\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                warning: {\n                  title: \"Warning Text Color\",\n                  description:\n                    \"Specifies the color for warning or error text. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#800000\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                success: {\n                  title: \"Success Text Color\",\n                  description:\n                    \"Specifies the color for success text. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#008000\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n              },\n            },\n            background: {\n              title: \"Background Colors\",\n              description: \"Defines the background colors for the dashboard.\",\n              type: \"object\",\n              required: [],\n              properties: {\n                selected: {\n                  title: \"Selected Background Color\",\n                  description:\n                    \"Defines the background color for selected items. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#808080\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n              },\n            },\n            border: {\n              title: \"Border Colors\",\n              description: \"Defines the border colors for the dashboard.\",\n              type: \"object\",\n              required: [],\n              properties: {\n                primary: {\n                  title: \"Primary Border Color\",\n                  description:\n                    \"Defines the border color for primary elements. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#808080\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                secondary: {\n                  title: \"Secondary Border Color\",\n                  description:\n                    \"Defines the border color for secondary elements. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#c0c0c0\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                faint: {\n                  title: \"Faint Border Color\",\n                  description:\n                    \"Defines the border color between rows in the table. Must be a valid hex color, like `#a3c` or `#aa33cc`.\",\n                  type: \"string\",\n                  default: \"#000000\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n              },\n            },\n            icon: {\n              title: \"Icon Colors\",\n              description: \"Defines author-role icon colors for the dashboard.\",\n              type: \"object\",\n              properties: {\n                newcontributor: {\n                  title: \"New Contributor Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the new-contributor-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                contributor: {\n                  title: \"Contributor Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the contributor-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                collaborator: {\n                  title: \"Collaborator Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the collaborator-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                member: {\n                  title: \"Member Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the member-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                owner: {\n                  title: \"Owner Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the owner-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n                unknownrole: {\n                  title: \"Unknown Role Icon Color\",\n                  description:\n                    \"Specifies the icon color for the unknown-role icon.\",\n                  type: \"string\",\n                  pattern: \"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$\",\n                },\n              },\n            },\n          },\n        },\n      },\n      default: {\n        ui: {\n          sectionsShowCount: true,\n          table: {\n            showSeparators: true,\n            compact: false,\n          },\n        },\n        colors: {\n          text: {\n            primary: \"#ffffff\",\n            secondary: \"#c6c6c6\",\n            inverted: \"#303030\",\n            faint: \"#8a8a8a\",\n            warning: \"#800000\",\n            success: \"#008000\",\n          },\n          background: {\n            selected: \"#808080\",\n          },\n          border: {\n            primary: \"#808080\",\n            secondary: \"#c0c0c0\",\n            faint: \"#000000\",\n          },\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/pages/schema.json.ts",
    "content": "export function GET() {\n  return new Response(\n    JSON.stringify({\n      $schema: \"https://json-schema.org/draft/2020-12/schema\",\n      $id: \"gh-dash.schema.json\",\n      title: \"Dashboard Configuration\",\n      description: \"Settings for the GitHub Dashboard.\",\n      type: \"object\",\n      properties: {\n        prSections: {\n          title: \"Pull Request Sections\",\n          description: \"Define sections for the dashboard's PR view.\",\n          type: \"array\",\n          items: {\n            $ref: \"./schema/pr-section.json\",\n          },\n          default: [\n            {\n              title: \"My Pull Requests\",\n              filters: \"is:open author:@me\",\n            },\n            {\n              title: \"Needs My Review\",\n              filters: \"is:open review-requested:@me\",\n            },\n            {\n              title: \"Involved\",\n              filters: \"is:open involves:@me -author:@me\",\n            },\n          ],\n        },\n        issuesSections: {\n          title: \"Issue Sections\",\n          description: \"Define sections for the dashboard's Issues view.\",\n          type: \"array\",\n          items: {\n            $ref: \"./schema/issue-section.json\",\n          },\n          default: [\n            {\n              title: \"My Issues\",\n              filters: \"is:open author:@me\",\n            },\n            {\n              title: \"Assigned\",\n              filters: \"is:open assignee:@me\",\n            },\n            {\n              title: \"Involved\",\n              filters: \"is:open involves:@me -author:@me\",\n            },\n          ],\n        },\n        defaults: {\n          $ref: \"./schema/defaults.json\",\n        },\n        repoPaths: {\n          title: \"Repo Path Map\",\n          description:\n            \"Key-value pairs that match repositories to local file paths.\",\n          type: \"object\",\n          examples: [\n            {\n              \"dlvhdr/*\": \"~/code/repos/*\",\n              \"dlvhdr/gh-dash\": \"~/code/gh-dash\",\n            },\n          ],\n          patternProperties: {\n            \"\\\\*$\": {\n              type: \"string\",\n              pattern: \"\\\\*$\",\n              title: \"With a Wildcard\",\n              description:\n                \"If the repo name (key) includes an asterisk, the path (value) must too.\",\n            },\n            \"^[^\\\\*]+$\": {\n              type: \"string\",\n              pattern: \"^[^\\\\*]+$\",\n              title: \"Without a Wildcard\",\n              description:\n                \"If the repo name (key) doesn't include an asterisk, the path (value) can't either.\",\n            },\n          },\n        },\n        keybindings: {\n          title: \"Keybindings\",\n          description: \"Define keybindings to run shell commands.\",\n          type: \"object\",\n          properties: {\n            prs: {\n              $ref: \"./schema/keybindings/prs.json\",\n            },\n            issues: {\n              $ref: \"./schema/keybindings/issues.json\",\n            },\n          },\n          examples: [\n            {\n              issues: [\n                {\n                  key: \"P\",\n                  command:\n                    \"gh issue pin {{ .IssueNumber }} --repo {{ .RepoName }}\",\n                },\n              ],\n            },\n            {\n              prs: [\n                {\n                  key: \"c\",\n                  command:\n                    \"tmux new-window -c {{.RepoPath}} '\\n  gh pr checkout {{.PrNumber}} &&\\n  nvim -c \\\":DiffviewOpen master...{{.HeadRefName}}\\\"\\n'\\n\",\n                },\n                {\n                  key: \"v\",\n                  command:\n                    \"cd {{.RepoPath}} && code . && gh pr checkout {{.PrNumber}}\\n\",\n                },\n              ],\n            },\n          ],\n        },\n        theme: {\n          $ref: \"./schema/theme.json\",\n        },\n        pager: {\n          title: \"Pager\",\n          description: \"Specify the pager settings to use in the dashboard.\",\n          type: \"object\",\n          properties: {\n            diff: {\n              title: \"Diff Pager\",\n              description: \"Specifies the pager to use when diffing.\",\n              type: \"string\",\n              anyOf: [\n                {\n                  type: \"string\",\n                },\n                {\n                  enum: [\"less\", \"delta\"],\n                },\n              ],\n              default: \"less\",\n            },\n          },\n        },\n        showAuthorIcons: {\n          title: \"Show Author Role Icons\",\n          description:\n            \"Specifies whether to show author-role icons in the dashboard.\\nSet this value to `false` to hide the author-role icons.\\nSee the [Theme Icons](theme#icons) section and\\n[Icon Colors](theme#colors.icons) section for\\nconfiguration options you can set to change the author-role icons and author-role icon colors.\\n\",\n          type: \"boolean\",\n        },\n        smartFilteringAtLaunch: {\n          title: \"Smart Filtering At Launch\",\n          description:\n            \"Set this to `false` to disable [Smart Filtering](/getting-started/smartfiltering) at `gh-dash` launch.\\n\",\n          type: \"boolean\",\n        },\n        confirmQuit: {\n          title: \"Confirm Quit\",\n          description:\n            \"Specifies whether the user needs to confirm when quitting `gh-dash`\",\n          type: \"boolean\",\n          default: \"false\",\n        },\n      },\n    }),\n  );\n}\n"
  },
  {
    "path": "docs/src/styles/custom.css",
    "content": "@layer base, starlight, theme, components, utilities, my-overrides, my-overrides-index;\n\n@import \"@astrojs/starlight-tailwind\";\n@import \"tailwindcss/theme.css\" layer(theme);\n@import \"tailwindcss/utilities.css\" layer(utilities);\n\n@theme {\n  --animate-bannermove: bannermove 10s linear infinite;\n\n  @keyframes bannermove {\n    0% {\n      transform: translate(0, 0);\n    }\n    100% {\n      transform: translate(-100%, 0);\n    }\n  }\n}\n\nbutton {\n  cursor: pointer;\n\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\nh1 {\n  font-size: var(--text-4xl);\n}\nh2 {\n  font-size: var(--text-2xl);\n}\nh3 {\n  font-size: var(--text-xl);\n}\nh4 {\n  font-size: var(--text-lg);\n}\nh5 {\n  font-size: var(--text-md);\n}\nh6 {\n  font-size: var(--text-sm);\n}\n\n:root {\n  --sl-font: var(--font-family);\n  --sl-nav-height: 74px;\n  --sl-nav-pad-x: 16px;\n  --sl-color-bg-nav: var(--sl-color-bg);\n  --sl-color-bg-sidebar: var(--sl-color-bg);\n  --sl-color-hairline-shade: none;\n}\n\n.sidebar-pane {\n  --sl-color-hairline-shade: var(--sl-color-gray-6);\n}\n\n@media (width <= 64rem) {\n  :root {\n    --sl-nav-pad-x: 8px;\n  }\n}\n\n/* Dark mode colors. */\n:root {\n  --hdr-gradient: linear-gradient(\n    to right in oklab,\n    oklch(90% 0.5 200),\n    oklch(80% 0.3 230)\n  );\n\n  --hdr-green-red-gradient: linear-gradient(\n    90deg,\n    hsl(123deg 100% 47%) 1%,\n    hsl(80deg 100% 41%) 49%,\n    hsl(56deg 100% 37%) 51%,\n    hsl(37deg 100% 43%) 49%,\n    hsl(22deg 100% 47%) 51%,\n    hsl(356deg 100% 47%) 99%\n  );\n\n  --hdr-green-gradient: linear-gradient(\n    to right in oklab,\n    oklch(0.8512 0.1937 154.97) 37% 17%,\n    oklch(0.7115 0.131 174.2)\n  );\n\n  --hdr-red-gradient: linear-gradient(\n    to right in oklab,\n    oklch(91% 0.45 37),\n    oklch(95% 0.4 95)\n  );\n\n  --radial-silver-gradient: radial-gradient(\n    farthest-corner circle at 65% 37% in oklch,\n    oklch(95% 0.02 214) 11%,\n    12%,\n    oklch(39% 0 68) 55%,\n    57%,\n    oklch(41% 0.04 58)\n  );\n\n  --hdr-yellow-gradient: linear-gradient(\n    to right in oklab,\n    oklch(95% 0.4 95),\n    oklch(79% 0.45 64)\n  );\n\n  --sl-color-bg: #03030a;\n  --sl-color-accent-low: var(--color-blue-200);\n  --sl-color-accent: var(--color-blue-300);\n  --sl-color-accent-high: #0ff;\n  --sl-color-white: #c0caf5;\n  --sl-color-gray-1: #eceef2;\n  --sl-color-gray-2: #c0c2c7;\n  --sl-color-gray-3: #6d728e;\n  --sl-color-gray-4: #4e5673;\n  --sl-color-gray-5: #292e42;\n  --sl-color-gray-6: #1a1b26;\n\n  --sl-color-black: #0f0f1c;\n}\n/* Light mode colors. */\n:root[data-theme=\"light\"] {\n  --hdr-gradient: linear-gradient(\n    to right in oklab,\n    oklch(16% 0.5 200) 0%,\n    oklch(65% 0.3 230) 100%\n  );\n\n  --hdr-green-gradient: linear-gradient(\n    to right in oklab,\n    oklch(35% 0.5 145),\n    oklch(64% 0.5 178)\n  );\n\n  --hdr-green-red-gradient: linear-gradient(\n    90deg,\n    hsl(123deg 100% 47%) 1%,\n    hsl(80deg 100% 41%) 49%,\n    hsl(56deg 100% 37%) 51%,\n    hsl(37deg 100% 43%) 49%,\n    hsl(22deg 100% 47%) 51%,\n    hsl(356deg 100% 47%) 99%\n  );\n\n  --hdr-red-gradient: linear-gradient(\n    to right in oklab,\n    oklch(24% 0.45 37),\n    oklch(63% 0.4 95)\n  );\n\n  --sl-color-bg: #f5f6f8;\n  --sl-color-accent-low: var(--color-blue-600);\n  --sl-color-accent: var(--color-blue-500);\n  --sl-color-accent-high: var(--color-blue-400);\n  --sl-color-white: #17181c;\n  --sl-color-gray-1: #24272f;\n  --sl-color-gray-2: #353841;\n  --sl-color-gray-3: #545861;\n  --sl-color-gray-4: #888b96;\n  --sl-color-gray-5: #c0c2c7;\n  --sl-color-gray-6: #eceef2;\n  --sl-color-gray-7: #f5f6f8;\n  --sl-color-black: #ffffff;\n}\n\n@layer base {\n  :root {\n    --font-family: \"CommitMono\", \"MyFallbackFont\", monospace;\n    --font-size: 16px;\n  }\n\n  ul,\n  ol {\n    padding-left: 32px;\n  }\n\n  .copy button {\n    background-image: none;\n  }\n}\n\n.sidebar-content {\n  font-size: 1em;\n  line-height: 1;\n\n  --foreground0: var(--sl-color-white);\n  --foreground1: var(--sl-color-gray-1);\n  --foreground2: var(--sl-color-gray-2);\n\n  ul > li {\n    font-family: var(--font-family);\n    --sl-sidebar-item-padding-inline: 0;\n    color: var(--foreground2);\n    text-decoration: none;\n    outline: none;\n    display: flex;\n    border-left: none;\n    padding-block: 2px;\n\n    & a {\n      font-size: 1em;\n      text-decoration: none;\n      padding-block: 0;\n      padding-inline: 4px;\n      line-height: 1.3;\n\n      &[aria-current=\"page\"] {\n        color: var(--sl-color-gray-6);\n      }\n    }\n\n    &::before {\n      content: \"  |\";\n      padding-right: 5px;\n      color: var(--sl-color-gray-5);\n    }\n\n    &.active {\n      color: var(--foreground0);\n      text-decoration: underline;\n      font-weight: var(--font-weight-bold);\n      background-color: var(--background1);\n    }\n\n    &:focus {\n      background-color: var(--background1);\n    }\n  }\n\n  li:has(details) {\n    &::before {\n      content: \"\";\n    }\n\n    summary {\n      padding-top: 0;\n      font-weight: var(--font-weight-bold);\n      --sl-text-base: 1.2em;\n      .group-label::before {\n        color: var(--foreground2);\n        content: \"→\";\n      }\n\n      & svg {\n        display: none;\n      }\n\n      &:hover,\n      &:focus {\n        background-color: var(--background1);\n      }\n    }\n\n    details[open] > summary {\n      .group-label::before {\n        font-size: 1em;\n        content: \"↓\";\n        color: var(--foreground2);\n      }\n    }\n  }\n\n  details[open] a.hidden,\n  details.hidden,\n  .hidden {\n    display: none;\n  }\n}\n\ncode {\n  font-family: var(--font-family);\n  color: var(--sl-color-accent);\n}\n\npre {\n  font-family: var(--font-family);\n  background: var(--background0);\n\n  code span {\n    padding-inline: 0;\n  }\n}\n\nkbd:not(.sl-hidden) {\n  margin-top: 0;\n  display: inline-block;\n  border: 1px solid var(--sl-color-gray-5);\n  border-radius: 0.25rem;\n  background-color: var(--sl-color-gray-6);\n  box-shadow:\n    0 1px 1px var(--sl-color-gray-5),\n    0 2px 0 0 var(--sl-color-gray-6) inset;\n  font-size: var(--sl-text-xs);\n  font-weight: 700;\n  line-height: 1;\n  padding: 2px 4px;\n}\n\n.hero {\n  padding-bottom: 16px;\n}\n\n@layer my-overrides {\n  th {\n    font-weight: normal;\n  }\n\n  @media (width <= 64rem) {\n    starlight-theme-select {\n      margin-right: 42px;\n      & select {\n        width: 8px;\n        padding-inline: 24px;\n      }\n    }\n\n    .mobile-preferences starlight-theme-select {\n      margin-right: 0;\n      & select {\n        width: calc(var(--sl-select-width) + var(--sl-inline-padding) * 2);\n        padding-inline: calc(\n            var(--sl-label-icon-size) + var(--sl-inline-padding) + 0.25rem\n          )\n          calc(var(--sl-caret-size) + var(--sl-inline-padding) + 0.25rem);\n      }\n    }\n  }\n\n  header.header {\n    @apply !m-0 w-full rounded !p-0;\n    box-shadow: 0px -8px 0px var(--sl-color-bg);\n  }\n\n  starlight-menu-button button {\n    top: 21px;\n    right: 16px;\n    background-color: var(--sl-color-gray-5);\n    color: var(--sl-color-gray-1);\n  }\n\n  mobile-starlight-toc nav {\n    border-top: none;\n    margin-top: 8px;\n\n    & summary {\n      padding-inline: 8px;\n    }\n  }\n}\n"
  },
  {
    "path": "docs/src/styles/fade-images.css",
    "content": ".fadein {\n  position: relative;\n  height: 100%;\n}\n.fadein img {\n  position: absolute;\n  left: 0px;\n  top: 0px;\n  -webkit-animation-name: fade;\n  -webkit-animation-iteration-count: infinite;\n  -webkit-animation-duration: 6s;\n  animation-name: fade;\n  animation-iteration-count: infinite;\n  animation-duration: 6s;\n}\n\n@-webkit-keyframes fade {\n  0% {\n    opacity: 0;\n  }\n  20% {\n    opacity: 1;\n  }\n  33% {\n    opacity: 1;\n  }\n  53% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n@keyframes fade {\n  0% {\n    opacity: 0;\n  }\n  20% {\n    opacity: 1;\n  }\n  33% {\n    opacity: 1;\n  }\n  53% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n\nimg:nth-child(1) {\n  position: relative;\n}\nimg:nth-child(2) {\n  -webkit-animation-delay: -4s;\n}\nimg:nth-child(3) {\n  -webkit-animation-delay: -2s;\n}\n"
  },
  {
    "path": "docs/src/styles/index.css",
    "content": "@import \"./custom.css\";\n\nhtml:not([data-has-sidebar]) {\n  --sl-content-width: 100%;\n}\n\n@media (width >= 64rem) {\n  :root {\n    --sl-content-width: 80rem;\n  }\n}\n\n* {\n  box-sizing: border-box;\n}\n\nmain {\n  overflow-x: hidden;\n}\n\n#main-buttons button {\n  padding: 8px;\n  width: 20ch;\n}\n\n.content-panel {\n  padding-bottom: 0px;\n  padding-top: 16px;\n  border-top: none;\n}\n\n.sl-container .sl-markdown-content {\n  @apply flex w-full flex-col items-center;\n}\n\n#main-buttons button[variant-=\"background0\"] {\n  background: var(--background0);\n  font-weight: 400;\n  color: var(--sl-color-white);\n}\n\npre,\ncode {\n  border: none;\n  padding-block: 0;\n  background-color: var(--sl-color-black);\n}\n\nli code {\n  color: var(--color-green-200);\n  background-color: var(--color-gray-800);\n}\n\nul {\n  margin-top: 0px;\n}\n\nli {\n  margin-top: 8px;\n\n  kbd {\n    margin-bottom: 0;\n  }\n}\n\ndiv.copy button[title=\"Copy to clipboard\"] {\n  display: none;\n}\n\nfooter {\n  display: none;\n}\n\n@layer my-overrides-index {\n  html {\n    --sl-content-width: 100%;\n  }\n\n  site-search {\n    @apply hidden;\n  }\n\n  th {\n    font-weight: normal;\n  }\n\n  @media (width <= 64rem) {\n    starlight-theme-select {\n      margin-right: 0px;\n      & select {\n        width: 8px;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "docs/src/styles/nerd-font.css",
    "content": "@import \"https://www.nerdfonts.com/assets/css/webfont.css\";\n"
  },
  {
    "path": "docs/src/styles/terminal.css",
    "content": ".terminal {\n  position: relative;\n  border: 1px solid var(--sl-color-gray-5);\n  display: flex;\n  flex-direction: column;\n  margin: 0;\n\n  * {\n    padding: 0;\n    margin: 0;\n  }\n}\n.terminal .top {\n  font-size: 0.75rem;\n  background: none;\n  color: var(--sl-color-gray-3);\n  padding: 4px;\n  border-bottom: 1px solid var(--sl-color-gray-5);\n  border-radius: 5px 5px 0 0;\n}\n.terminal .btns {\n  position: absolute;\n  display: flex;\n  flex-direction: row;\n  gap: 6px;\n  top: 10px;\n  left: 12px;\n}\n.terminal .circle {\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  border-style: solid;\n}\n.terminal-title {\n  color: var(--sl-color-gray-3);\n  text-align: center;\n}\n.red {\n  background: #ec6a5f;\n  border-color: #d04e42;\n}\n.green {\n  background: #64cc57;\n  border-color: #4ea73b;\n}\n.yellow {\n  background: #f5c04f;\n  border-color: #d6a13d;\n}\n.clear {\n  clear: both;\n}\n.terminal .body {\n  background: black;\n  color: #7afb4c;\n  padding: 2px;\n  flex-grow: 1;\n  overflow: auto;\n}\n"
  },
  {
    "path": "docs/tsconfig.json",
    "content": "{\n  \"extends\": \"astro/tsconfigs/strict\",\n  \"include\": [\".astro/types.d.ts\", \"**/*\"],\n  \"exclude\": [\"dist\"]\n}\n"
  },
  {
    "path": "gh-dash.go",
    "content": "package main\n\nimport (\n\t\"github.com/dlvhdr/gh-dash/v4/cmd\"\n)\n\nfunc main() {\n\tcmd.Execute()\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/dlvhdr/gh-dash/v4\n\ngo 1.25.8\n\nrequire (\n\tcharm.land/bubbles/v2 v2.0.0\n\tcharm.land/bubbletea/v2 v2.0.2\n\tcharm.land/glamour/v2 v2.0.0\n\tcharm.land/lipgloss/v2 v2.0.1\n\tcharm.land/log/v2 v2.0.0\n\tgithub.com/atotto/clipboard v0.1.4\n\tgithub.com/charmbracelet/fang v1.0.0\n\tgithub.com/cli/go-gh/v2 v2.13.0\n\tgithub.com/cli/shurcooL-graphql v0.0.4\n\tgithub.com/dlvhdr/x/gh-checks v0.4.0\n\tgithub.com/gen2brain/beeep v0.11.2\n\tgithub.com/go-playground/validator/v10 v10.30.1\n\tgithub.com/go-sprout/sprout v1.0.3\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/knadh/koanf/maps v0.1.2\n\tgithub.com/knadh/koanf/parsers/yaml v1.1.0\n\tgithub.com/knadh/koanf/providers/file v1.2.1\n\tgithub.com/knadh/koanf/v2 v2.3.3\n\tgithub.com/lrstanley/bubblezone/v2 v2.0.0\n\tgithub.com/maypok86/otter/v2 v2.3.0\n\tgithub.com/sahilm/fuzzy v0.1.1\n\tgithub.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/stretchr/testify v1.11.1\n)\n\nrequire (\n\tgit.sr.ht/~jackmordaunt/go-toast v1.1.2 // indirect\n\tgithub.com/charmbracelet/colorprofile v0.4.2 // indirect\n\tgithub.com/charmbracelet/ultraviolet v0.0.0-20260309091805-903bfd0cf188 // indirect\n\tgithub.com/charmbracelet/x/exp/charmtone v0.0.0-20260309091332-e8ca31595cc4 // indirect\n\tgithub.com/charmbracelet/x/exp/slice v0.0.0-20260309091332-e8ca31595cc4 // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/charmbracelet/x/termios v0.1.1 // indirect\n\tgithub.com/charmbracelet/x/windows v0.2.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.11.0 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.7.0 // indirect\n\tgithub.com/esiqveland/notify v0.13.3 // indirect\n\tgithub.com/fsnotify/fsnotify v1.9.0 // indirect\n\tgithub.com/go-ole/go-ole v1.3.0 // indirect\n\tgithub.com/go-viper/mapstructure/v2 v2.5.0 // indirect\n\tgithub.com/jackmordaunt/icns/v3 v3.0.1 // indirect\n\tgithub.com/kr/pretty v0.3.1 // indirect\n\tgithub.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 // indirect\n\tgithub.com/mitchellh/copystructure v1.2.0 // indirect\n\tgithub.com/mitchellh/reflectwalk v1.0.2 // indirect\n\tgithub.com/muesli/mango v0.2.0 // indirect\n\tgithub.com/muesli/mango-cobra v1.3.0 // indirect\n\tgithub.com/muesli/mango-pflag v0.2.0 // indirect\n\tgithub.com/muesli/roff v0.1.0 // indirect\n\tgithub.com/muesli/termenv v0.16.0 // indirect\n\tgithub.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect\n\tgithub.com/sergeymakinen/go-bmp v1.0.0 // indirect\n\tgithub.com/sergeymakinen/go-ico v1.0.0 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgo.yaml.in/yaml/v3 v3.0.4 // indirect\n)\n\nrequire (\n\tgithub.com/alecthomas/chroma/v2 v2.23.1 // indirect\n\tgithub.com/aymanbagabas/git-module v1.8.4-0.20231101154130-8d27204ac6d2\n\tgithub.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect\n\tgithub.com/aymerick/douceur v0.2.0 // indirect\n\tgithub.com/charmbracelet/x/ansi v0.11.6\n\tgithub.com/cli/browser v1.3.0 // indirect\n\tgithub.com/cli/safeexec v1.0.1 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dlclark/regexp2 v1.11.5 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.13 // indirect\n\tgithub.com/go-logfmt/logfmt v0.6.1 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/godbus/dbus/v5 v5.2.2 // indirect\n\tgithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect\n\tgithub.com/gorilla/css v1.0.1 // indirect\n\tgithub.com/henvic/httpretty v0.1.4 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/leodido/go-urn v1.4.0 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.3.0 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.21 // indirect\n\tgithub.com/microcosm-cc/bluemonday v1.0.27 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/shurcooL/graphql v0.0.0-20240915155400-7ee5256398cf // indirect\n\tgithub.com/spf13/pflag v1.0.10 // indirect\n\tgithub.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect\n\tgithub.com/thlib/go-timezone-local v0.0.7 // indirect\n\tgithub.com/yuin/goldmark v1.7.16 // indirect\n\tgithub.com/yuin/goldmark-emoji v1.0.6 // indirect\n\tgolang.org/x/crypto v0.48.0 // indirect\n\tgolang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect\n\tgolang.org/x/net v0.51.0 // indirect\n\tgolang.org/x/oauth2 v0.15.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/term v0.40.0 // indirect\n\tgolang.org/x/text v0.34.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1\n)\n"
  },
  {
    "path": "go.sum",
    "content": "charm.land/bubbles/v2 v2.0.0 h1:tE3eK/pHjmtrDiRdoC9uGNLgpopOd8fjhEe31B/ai5s=\ncharm.land/bubbles/v2 v2.0.0/go.mod h1:rCHoleP2XhU8um45NTuOWBPNVHxnkXKTiZqcclL/qOI=\ncharm.land/bubbletea/v2 v2.0.2 h1:4CRtRnuZOdFDTWSff9r8QFt/9+z6Emubz3aDMnf/dx0=\ncharm.land/bubbletea/v2 v2.0.2/go.mod h1:3LRff2U4WIYXy7MTxfbAQ+AdfM3D8Xuvz2wbsOD9OHQ=\ncharm.land/glamour/v2 v2.0.0 h1:IDBoqLEy7Hdpb9VOXN+khLP/XSxtJy1VsHuW/yF87+U=\ncharm.land/glamour/v2 v2.0.0/go.mod h1:kjq9WB0s8vuUYZNYey2jp4Lgd9f4cKdzAw88FZtpj/w=\ncharm.land/lipgloss/v2 v2.0.1 h1:6Xzrn49+Py1Um5q/wZG1gWgER2+7dUyZ9XMEufqPSys=\ncharm.land/lipgloss/v2 v2.0.1/go.mod h1:KjPle2Qd3YmvP1KL5OMHiHysGcNwq6u83MUjYkFvEkM=\ncharm.land/log/v2 v2.0.0 h1:SY3Cey7ipx86/MBXQHwsguOT6X1exT94mmJRdzTNs+s=\ncharm.land/log/v2 v2.0.0/go.mod h1:c3cZSRqm20qUVVAR1WmS/7ab8bgha3C6G7DjPcaVZz0=\ndario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=\ndario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=\ngit.sr.ht/~jackmordaunt/go-toast v1.1.2 h1:/yrfI55LRt1M7H1vkaw+NaH1+L1CDxrqDltwm5euVuE=\ngit.sr.ht/~jackmordaunt/go-toast v1.1.2/go.mod h1:jA4OqHKTQ4AFBdwrSnwnskUIIS3HYzlJSgdzCKqfavo=\ngithub.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=\ngithub.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=\ngithub.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=\ngithub.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=\ngithub.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY=\ngithub.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=\ngithub.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=\ngithub.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=\ngithub.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=\ngithub.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=\ngithub.com/aymanbagabas/git-module v1.8.4-0.20231101154130-8d27204ac6d2 h1:3w5KT+shE3hzWhORGiu2liVjEoaCEXm9uZP47+Gw4So=\ngithub.com/aymanbagabas/git-module v1.8.4-0.20231101154130-8d27204ac6d2/go.mod h1:d4gQ7/3/S2sPq4NnKdtAgUOVr6XtLpWFtxyVV5/+76U=\ngithub.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=\ngithub.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=\ngithub.com/aymanbagabas/go-udiff v0.4.1 h1:OEIrQ8maEeDBXQDoGCbbTTXYJMYRCRO1fnodZ12Gv5o=\ngithub.com/aymanbagabas/go-udiff v0.4.1/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w=\ngithub.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=\ngithub.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=\ngithub.com/charmbracelet/colorprofile v0.4.2 h1:BdSNuMjRbotnxHSfxy+PCSa4xAmz7szw70ktAtWRYrY=\ngithub.com/charmbracelet/colorprofile v0.4.2/go.mod h1:0rTi81QpwDElInthtrQ6Ni7cG0sDtwAd4C4le060fT8=\ngithub.com/charmbracelet/fang v1.0.0 h1:jESBY40agJOlLYnnv9jE0mLqDGTxEk0hkOnx7YGyRlQ=\ngithub.com/charmbracelet/fang v1.0.0/go.mod h1:P5/DNb9DddQ0Z0dbc0P3ol4/ix5Po7Ofr2KMBfAqoCo=\ngithub.com/charmbracelet/ultraviolet v0.0.0-20260309091805-903bfd0cf188 h1:J8v4kWJYCaxv1SLhLunN74S+jMteZ1f7Dae99ioq4Bo=\ngithub.com/charmbracelet/ultraviolet v0.0.0-20260309091805-903bfd0cf188/go.mod h1:FzWNAbe1jEmI+GZljSnlaSA8wJjnNIZhWBLkTsAl6eg=\ngithub.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8=\ngithub.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ=\ngithub.com/charmbracelet/x/exp/charmtone v0.0.0-20260309091332-e8ca31595cc4 h1:wQs/I0JSEkcHzobvAgfzeJOKm9A8mkeDOkWQxAo0AZc=\ngithub.com/charmbracelet/x/exp/charmtone v0.0.0-20260309091332-e8ca31595cc4/go.mod h1:nsExn0DGyX0lh9LwLHTn2Gg+hafdzfSXnC+QmEJTZFY=\ngithub.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA=\ngithub.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I=\ngithub.com/charmbracelet/x/exp/slice v0.0.0-20260309091332-e8ca31595cc4 h1:BgljFS5WhqF7q64igyhjLGZhVMKEi6tudHizksBASeo=\ngithub.com/charmbracelet/x/exp/slice v0.0.0-20260309091332-e8ca31595cc4/go.mod h1:vqEfX6xzqW1pKKZUUiFOKg0OQ7bCh54Q2vR/tserrRA=\ngithub.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=\ngithub.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=\ngithub.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=\ngithub.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=\ngithub.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM=\ngithub.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k=\ngithub.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo=\ngithub.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk=\ngithub.com/cli/go-gh/v2 v2.13.0 h1:jEHZu/VPVoIJkciK3pzZd3rbT8J90swsK5Ui4ewH1ys=\ngithub.com/cli/go-gh/v2 v2.13.0/go.mod h1:Us/NbQ8VNM0fdaILgoXSz6PKkV5PWaEzkJdc9vR2geM=\ngithub.com/cli/safeexec v1.0.1 h1:e/C79PbXF4yYTN/wauC4tviMxEV13BwljGj0N9j+N00=\ngithub.com/cli/safeexec v1.0.1/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q=\ngithub.com/cli/shurcooL-graphql v0.0.4 h1:6MogPnQJLjKkaXPyGqPRXOI2qCsQdqNfUY1QSJu2GuY=\ngithub.com/cli/shurcooL-graphql v0.0.4/go.mod h1:3waN4u02FiZivIV+p1y4d0Jo1jc6BViMA73C+sZo2fk=\ngithub.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=\ngithub.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=\ngithub.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=\ngithub.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=\ngithub.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=\ngithub.com/dlvhdr/x/gh-checks v0.4.0 h1:i3YV2aYWKegWc8J6YHMCwgV/QwkYMNMwmTaSCNEMMrE=\ngithub.com/dlvhdr/x/gh-checks v0.4.0/go.mod h1:rKC7AjoEOg95nM9iATbJf2FYb4KPLeg6nileMqFg3G8=\ngithub.com/esiqveland/notify v0.13.3 h1:QCMw6o1n+6rl+oLUfg8P1IIDSFsDEb2WlXvVvIJbI/o=\ngithub.com/esiqveland/notify v0.13.3/go.mod h1:hesw/IRYTO0x99u1JPweAl4+5mwXJibQVUcP0Iu5ORE=\ngithub.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=\ngithub.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=\ngithub.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=\ngithub.com/gen2brain/beeep v0.11.2 h1:+KfiKQBbQCuhfJFPANZuJ+oxsSKAYNe88hIpJuyKWDA=\ngithub.com/gen2brain/beeep v0.11.2/go.mod h1:jQVvuwnLuwOcdctHn/uyh8horSBNJ8uGb9Cn2W4tvoc=\ngithub.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE=\ngithub.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk=\ngithub.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=\ngithub.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=\ngithub.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=\ngithub.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=\ngithub.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=\ngithub.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=\ngithub.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=\ngithub.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=\ngithub.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w=\ngithub.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM=\ngithub.com/go-sprout/sprout v1.0.3 h1:LLuz0D3aYazgbVTOwCVuMor3LOUVYinipXRIdjA/D+I=\ngithub.com/go-sprout/sprout v1.0.3/go.mod h1:cFFzpnyGGry3cmN0UNCAM1f7AGok6vPVabeYQzBMBZY=\ngithub.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=\ngithub.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=\ngithub.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=\ngithub.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=\ngithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=\ngithub.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8=\ngithub.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0=\ngithub.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=\ngithub.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=\ngithub.com/henvic/httpretty v0.1.4 h1:Jo7uwIRWVFxkqOnErcoYfH90o3ddQyVrSANeS4cxYmU=\ngithub.com/henvic/httpretty v0.1.4/go.mod h1:Dn60sQTZfbt2dYsdUSNsCljyF4AfdqnuJFDLJA1I4AM=\ngithub.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=\ngithub.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=\ngithub.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=\ngithub.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=\ngithub.com/jackmordaunt/icns/v3 v3.0.1 h1:xxot6aNuGrU+lNgxz5I5H0qSeCjNKp8uTXB1j8D4S3o=\ngithub.com/jackmordaunt/icns/v3 v3.0.1/go.mod h1:5sHL59nqTd2ynTnowxB/MDQFhKNqkK8X687uKNygaSQ=\ngithub.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo=\ngithub.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI=\ngithub.com/knadh/koanf/parsers/yaml v1.1.0 h1:3ltfm9ljprAHt4jxgeYLlFPmUaunuCgu1yILuTXRdM4=\ngithub.com/knadh/koanf/parsers/yaml v1.1.0/go.mod h1:HHmcHXUrp9cOPcuC+2wrr44GTUB0EC+PyfN3HZD9tFg=\ngithub.com/knadh/koanf/providers/file v1.2.1 h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP3AESOJYp9wM=\ngithub.com/knadh/koanf/providers/file v1.2.1/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=\ngithub.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94=\ngithub.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=\ngithub.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=\ngithub.com/lrstanley/bubblezone/v2 v2.0.0 h1:pMb9fHKs0slJF6OrzQ2hEgWusqyl9VU/S0UZ5hyh7ZA=\ngithub.com/lrstanley/bubblezone/v2 v2.0.0/go.mod h1:yV/QTjcm4Zu5cqvGvdHi7xVUfnB36w/SafOuDp57dgY=\ngithub.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=\ngithub.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-runewidth v0.0.21 h1:jJKAZiQH+2mIinzCJIaIG9Be1+0NR+5sz/lYEEjdM8w=\ngithub.com/mattn/go-runewidth v0.0.21/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=\ngithub.com/maypok86/otter/v2 v2.3.0 h1:8H8AVVFUSzJwIegKwv1uF5aGitTY+AIrtktg7OcLs8w=\ngithub.com/maypok86/otter/v2 v2.3.0/go.mod h1:XgIdlpmL6jYz882/CAx1E4C1ukfgDKSaw4mWq59+7l8=\ngithub.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo=\ngithub.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 h1:YocNLcTBdEdvY3iDK6jfWXvEaM5OCKkjxPKoJRdB3Gg=\ngithub.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo=\ngithub.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=\ngithub.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=\ngithub.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=\ngithub.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=\ngithub.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=\ngithub.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=\ngithub.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=\ngithub.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=\ngithub.com/muesli/mango v0.2.0 h1:iNNc0c5VLQ6fsMgAqGQofByNUBH2Q2nEbD6TaI+5yyQ=\ngithub.com/muesli/mango v0.2.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=\ngithub.com/muesli/mango-cobra v1.3.0 h1:vQy5GvPg3ndOSpduxutqFoINhWk3vD5K2dXo5E8pqec=\ngithub.com/muesli/mango-cobra v1.3.0/go.mod h1:Cj1ZrBu3806Qw7UjxnAUgE+7tllUBj1NCLQDwwGx19E=\ngithub.com/muesli/mango-pflag v0.2.0 h1:QViokgKDZQCzKhYe1zH8D+UlPJzBSGoP9yx0hBG0t5k=\ngithub.com/muesli/mango-pflag v0.2.0/go.mod h1:X9LT1p/pbGA1wjvEbtwnixujKErkP0jVmrxwrw3fL0Y=\ngithub.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=\ngithub.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=\ngithub.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=\ngithub.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=\ngithub.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=\ngithub.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=\ngithub.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=\ngithub.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=\ngithub.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=\ngithub.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=\ngithub.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=\ngithub.com/sergeymakinen/go-bmp v1.0.0 h1:SdGTzp9WvCV0A1V0mBeaS7kQAwNLdVJbmHlqNWq0R+M=\ngithub.com/sergeymakinen/go-bmp v1.0.0/go.mod h1:/mxlAQZRLxSvJFNIEGGLBE/m40f3ZnUifpgVDlcUIEY=\ngithub.com/sergeymakinen/go-ico v1.0.0 h1:uL3khgvKkY6WfAetA+RqsguClBuu7HpvBB/nq/Jvr80=\ngithub.com/sergeymakinen/go-ico v1.0.0/go.mod h1:wQ47mTczswBO5F0NoDt7O0IXgnV4Xy3ojrroMQzyhUk=\ngithub.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed h1:KT7hI8vYXgU0s2qaMkrfq9tCA1w/iEPgfredVP+4Tzw=\ngithub.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed/go.mod h1:zqMwyHmnN/eDOZOdiTohqIUKUrTFX62PNlu7IJdu0q8=\ngithub.com/shurcooL/graphql v0.0.0-20240915155400-7ee5256398cf h1:o1uxfymjZ7jZ4MsgCErcwWGtVKSiNAXtS59Lhs6uI/g=\ngithub.com/shurcooL/graphql v0.0.0-20240915155400-7ee5256398cf/go.mod h1:9dIRpgIY7hVhoqfe0/FcYp0bpInZaT7dc3BYOprrIUE=\ngithub.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=\ngithub.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=\ngithub.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=\ngithub.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=\ngithub.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=\ngithub.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4=\ngithub.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=\ngithub.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af/go.mod h1:4F09kP5F+am0jAwlQLddpoMDM+iewkxxt6nxUQ5nq5o=\ngithub.com/thlib/go-timezone-local v0.0.7 h1:fX8zd3aJydqLlTs/TrROrIIdztzsdFV23OzOQx31jII=\ngithub.com/thlib/go-timezone-local v0.0.7/go.mod h1:/Tnicc6m/lsJE0irFMA0LfIwTBo4QP7A8IfyIv4zZKI=\ngithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=\ngithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=\ngithub.com/yuin/goldmark v1.7.16 h1:n+CJdUxaFMiDUNnWC3dMWCIQJSkxH4uz3ZwQBkAlVNE=\ngithub.com/yuin/goldmark v1.7.16/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=\ngithub.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9HTHs=\ngithub.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=\ngolang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=\ngolang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0=\ngolang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA=\ngolang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=\ngolang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=\ngolang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=\ngolang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=\ngolang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=\ngolang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=\ngolang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=\ngolang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=\ngolang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=\ngolang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=\ngoogle.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=\ngoogle.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY=\ngopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "internal/config/feature_flags.go",
    "content": "package config\n\nimport \"os\"\n\nconst FF_REPO_VIEW = \"FF_REPO_VIEW\"\n\nconst FF_MOCK_DATA = \"FF_MOCK_DATA\"\n\nfunc IsFeatureEnabled(name string) bool {\n\t_, ok := os.LookupEnv(name)\n\treturn ok\n}\n"
  },
  {
    "path": "internal/config/parser.go",
    "content": "package config\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/log/v2\"\n\t\"github.com/go-playground/validator/v10\"\n\t\"github.com/knadh/koanf/maps\"\n\t\"github.com/knadh/koanf/parsers/yaml\"\n\t\"github.com/knadh/koanf/providers/file\"\n\t\"github.com/knadh/koanf/v2\"\n\tyamlmarshaller \"gopkg.in/yaml.v3\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nvar hexColorRegex = regexp.MustCompile(`^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$`)\n\nvar conf = koanf.Conf{\n\tDelim:       \".\",\n\tStrictMerge: true,\n}\n\nconst DashDir = \"gh-dash\"\n\nconst RepoConfigFileName = \".gh-dash.yml\"\n\nconst ConfigYmlFileName = \"config.yml\"\n\n// TODO: use this\nconst ConfigYamlFileName = \"config.yaml\"\n\nconst DEFAULT_XDG_CONFIG_DIRNAME = \".config\"\n\nvar validate *validator.Validate\n\n/* Stringer implementation for ViewType */\ntype ViewType string\n\nfunc (vt ViewType) String() string {\n\treturn string(vt)\n}\n\nfunc (vt ViewType) MarshalJSON() ([]byte, error) {\n\treturn []byte(vt.String()), nil\n}\n\nfunc (a *ViewType) UnmarshalJSON(b []byte) error {\n\tvar s string\n\tif err := json.Unmarshal(b, &s); err != nil {\n\t\treturn err\n\t}\n\tswitch strings.ToLower(s) {\n\tcase \"notifications\":\n\t\t*a = NotificationsView\n\tcase \"prs\":\n\t\t*a = PRsView\n\tcase \"issues\":\n\t\t*a = IssuesView\n\tcase \"repo\":\n\t\t*a = RepoView\n\t}\n\n\treturn nil\n}\n\nconst (\n\tNotificationsView ViewType = \"notifications\"\n\tPRsView           ViewType = \"prs\"\n\tIssuesView        ViewType = \"issues\"\n\tRepoView          ViewType = \"repo\"\n)\n\ntype SectionConfig struct {\n\tTitle   string\n\tFilters string\n\tLimit   *int      `yaml:\"limit,omitempty\"`\n\tType    *ViewType `yaml:\"type,omitempty\"`\n}\n\ntype PrsSectionConfig struct {\n\tTitle   string\n\tFilters string\n\tLimit   *int            `yaml:\"limit,omitempty\"`\n\tLayout  PrsLayoutConfig `yaml:\"layout,omitempty\"`\n\tType    *ViewType       `yaml:\"type,omitempty\"`\n}\n\ntype IssuesSectionConfig struct {\n\tTitle   string\n\tFilters string\n\tLimit   *int               `yaml:\"limit,omitempty\"`\n\tLayout  IssuesLayoutConfig `yaml:\"layout,omitempty\"`\n}\n\ntype NotificationsSectionConfig struct {\n\tTitle   string\n\tFilters string\n\tLimit   *int `yaml:\"limit,omitempty\"`\n}\n\ntype PreviewConfig struct {\n\tOpen  bool\n\tWidth float64 `yaml:\"width\" validate:\"gt=0\"`\n}\n\ntype NullableBool struct {\n\tValue *bool\n}\n\nfunc (nb NullableBool) MarshalJSON() ([]byte, error) {\n\tlog.Error(\"marshalling\", \"nb\", nb)\n\tif nb.Value != nil {\n\t\treturn json.Marshal(nb.Value)\n\t}\n\n\treturn json.Marshal(false)\n}\n\nfunc (nullBool *NullableBool) UnmarshalJSON(b []byte) error {\n\tvar unmarshalledJson bool\n\tnb := NullableBool{}\n\tif nullBool == nil {\n\t\treturn nil\n\t}\n\n\terr := json.Unmarshal(b, &unmarshalledJson)\n\tif err != nil {\n\t\treturn err\n\t}\n\tnb.Value = &unmarshalledJson\n\t*nullBool = nb\n\treturn nil\n}\n\ntype ColumnConfig struct {\n\tWidth  *int  `yaml:\"width,omitempty\"  validate:\"omitempty,gt=0\"`\n\tHidden *bool `yaml:\"hidden,omitempty\"`\n}\n\ntype PrsLayoutConfig struct {\n\tUpdatedAt    ColumnConfig `yaml:\"updatedAt,omitempty\"`\n\tCreatedAt    ColumnConfig `yaml:\"createdAt,omitempty\"`\n\tRepo         ColumnConfig `yaml:\"repo,omitempty\"`\n\tAuthor       ColumnConfig `yaml:\"author,omitempty\"`\n\tAuthorIcon   ColumnConfig `yaml:\"authorIcon,omitempty\"`\n\tAssignees    ColumnConfig `yaml:\"assignees,omitempty\"`\n\tTitle        ColumnConfig `yaml:\"title,omitempty\"`\n\tBase         ColumnConfig `yaml:\"base,omitempty\"`\n\tReviewStatus ColumnConfig `yaml:\"reviewStatus,omitempty\"`\n\tState        ColumnConfig `yaml:\"state,omitempty\"`\n\tCi           ColumnConfig `yaml:\"ci,omitempty\"`\n\tLines        ColumnConfig `yaml:\"lines,omitempty\"`\n\tNumComments  ColumnConfig `yaml:\"numComments,omitempty\"`\n}\n\ntype IssuesLayoutConfig struct {\n\tUpdatedAt   ColumnConfig `yaml:\"updatedAt,omitempty\"`\n\tCreatedAt   ColumnConfig `yaml:\"createdAt,omitempty\"`\n\tState       ColumnConfig `yaml:\"state,omitempty\"`\n\tRepo        ColumnConfig `yaml:\"repo,omitempty\"`\n\tTitle       ColumnConfig `yaml:\"title,omitempty\"`\n\tCreator     ColumnConfig `yaml:\"creator,omitempty\"`\n\tCreatorIcon ColumnConfig `yaml:\"creatorIcon,omitempty\"`\n\tAssignees   ColumnConfig `yaml:\"assignees,omitempty\"`\n\tComments    ColumnConfig `yaml:\"comments,omitempty\"`\n\tReactions   ColumnConfig `yaml:\"reactions,omitempty\"`\n}\n\ntype LayoutConfig struct {\n\tPrs    PrsLayoutConfig    `yaml:\"prs,omitempty\"`\n\tIssues IssuesLayoutConfig `yaml:\"issues,omitempty\"`\n}\n\ntype Defaults struct {\n\tPreview                PreviewConfig `yaml:\"preview\"`\n\tPrsLimit               int           `yaml:\"prsLimit\"`\n\tPrApproveComment       string        `yaml:\"prApproveComment,omitempty\"`\n\tIssuesLimit            int           `yaml:\"issuesLimit\"`\n\tNotificationsLimit     int           `yaml:\"notificationsLimit\"`\n\tView                   ViewType      `yaml:\"view\"`\n\tLayout                 LayoutConfig  `yaml:\"layout,omitempty\"`\n\tRefetchIntervalMinutes int           `yaml:\"refetchIntervalMinutes,omitempty\"`\n\tDateFormat             string        `yaml:\"dateFormat,omitempty\"`\n}\n\ntype RepoConfig struct {\n\tBranchesRefetchIntervalSeconds int `yaml:\"branchesRefetchIntervalSeconds,omitempty\"`\n\tPrsRefetchIntervalSeconds      int `yaml:\"prsRefetchIntervalSeconds,omitempty\"`\n}\n\ntype Keybinding struct {\n\tKey     string `yaml:\"key\"`\n\tCommand string `yaml:\"command,omitempty\"`\n\tBuiltin string `yaml:\"builtin,omitempty\"`\n\tName    string `yaml:\"name,omitempty\"`\n}\n\nfunc (kb Keybinding) NewBinding(previous *key.Binding) key.Binding {\n\thelpDesc := \"\"\n\tif previous != nil {\n\t\thelpDesc = previous.Help().Desc\n\t}\n\n\tif kb.Name != \"\" {\n\t\thelpDesc = kb.Name\n\t}\n\n\treturn key.NewBinding(\n\t\tkey.WithKeys(kb.Key),\n\t\tkey.WithHelp(kb.Key, helpDesc),\n\t)\n}\n\ntype Keybindings struct {\n\tUniversal     []Keybinding `yaml:\"universal,omitempty\"`\n\tIssues        []Keybinding `yaml:\"issues,omitempty\"`\n\tPrs           []Keybinding `yaml:\"prs,omitempty\"`\n\tBranches      []Keybinding `yaml:\"branches,omitempty\"`\n\tNotifications []Keybinding `yaml:\"notifications,omitempty\"`\n}\n\ntype Pager struct {\n\tDiff string `yaml:\"diff\"`\n}\n\ntype Color string\n\nfunc (c Color) String() string {\n\treturn string(c)\n}\n\nfunc (c Color) IsZero() bool {\n\treturn c.String() == \"\"\n}\n\ntype ColorThemeIcon struct {\n\tNewContributor Color `yaml:\"newcontributor\" validate:\"omitempty,color\"`\n\tContributor    Color `yaml:\"contributor\"    validate:\"omitempty,color\"`\n\tCollaborator   Color `yaml:\"collaborator\"   validate:\"omitempty,color\"`\n\tMember         Color `yaml:\"member\"         validate:\"omitempty,color\"`\n\tOwner          Color `yaml:\"owner\"          validate:\"omitempty,color\"`\n\tUnknownRole    Color `yaml:\"unknownrole\"    validate:\"omitempty,color\"`\n}\n\ntype ColorThemeText struct {\n\tPrimary   Color `yaml:\"primary,omitzero,omitempty\" validate:\"omitzero,omitempty,color\"`\n\tSecondary Color `yaml:\"secondary\"                  validate:\"omitempty,color\"`\n\tInverted  Color `yaml:\"inverted\"                   validate:\"omitempty,color\"`\n\tFaint     Color `yaml:\"faint\"                      validate:\"omitempty,color\"`\n\tWarning   Color `yaml:\"warning\"                    validate:\"omitempty,color\"`\n\tSuccess   Color `yaml:\"success\"                    validate:\"omitempty,color\"`\n\tError     Color `yaml:\"error\"                      validate:\"omitempty,color\"`\n\tActor     Color `yaml:\"actor\"                      validate:\"omitempty,color\"`\n}\n\ntype ColorThemeBorder struct {\n\tPrimary   Color `yaml:\"primary\"   validate:\"omitempty,color\"`\n\tSecondary Color `yaml:\"secondary\" validate:\"omitempty,color\"`\n\tFaint     Color `yaml:\"faint\"     validate:\"omitempty,color\"`\n}\n\ntype ColorThemeBackground struct {\n\tSelected Color `yaml:\"selected\" validate:\"omitempty,color\"`\n}\n\ntype ColorTheme struct {\n\tIcon       ColorThemeIcon       `yaml:\"icon,omitempty\"       validate:\"required,omitempty\"`\n\tText       ColorThemeText       `yaml:\"text,omitempty\"       validate:\"required,omitempty\"`\n\tBackground ColorThemeBackground `yaml:\"background,omitempty\" validate:\"required,omitempty\"`\n\tBorder     ColorThemeBorder     `yaml:\"border,omitempty\"     validate:\"required,omitempty\"`\n}\n\ntype ColorThemeConfig struct {\n\tInline ColorTheme `yaml:\",inline,squash\"`\n}\n\ntype IconTheme struct {\n\tNewContributor string `yaml:\"newcontributor,omitempty\"`\n\tContributor    string `yaml:\"contributor,omitempty\"`\n\tCollaborator   string `yaml:\"collaborator,omitempty\"`\n\tMember         string `yaml:\"member,omitempty\"`\n\tOwner          string `yaml:\"owner,omitempty\"`\n\tUnknownRole    string `yaml:\"unknownrole,omitempty\"`\n}\n\ntype IconThemeConfig struct {\n\tInline IconTheme `yaml:\",inline\"`\n}\n\ntype TableUIThemeConfig struct {\n\tShowSeparator bool `yaml:\"showSeparator\" default:\"true\"`\n\tCompact       bool `yaml:\"compact\"       default:\"false\"`\n}\n\ntype UIThemeConfig struct {\n\tSectionsShowCount bool               `yaml:\"sectionsShowCount\" default:\"true\"`\n\tTable             TableUIThemeConfig `yaml:\"table\"`\n}\n\ntype ThemeConfig struct {\n\tUi     UIThemeConfig     `yaml:\"ui,omitempty\"     validate:\"omitempty\"`\n\tColors *ColorThemeConfig `yaml:\"colors,omitempty\" validate:\"omitempty\"`\n\tIcons  *IconThemeConfig  `yaml:\"icons,omitempty\"  validate:\"omitempty\"`\n}\n\ntype Config struct {\n\tPRSections               []PrsSectionConfig           `yaml:\"prSections\"`\n\tIssuesSections           []IssuesSectionConfig        `yaml:\"issuesSections\"`\n\tNotificationsSections    []NotificationsSectionConfig `yaml:\"notificationsSections\"`\n\tRepo                     RepoConfig                   `yaml:\"repo,omitempty\"`\n\tDefaults                 Defaults                     `yaml:\"defaults\"`\n\tKeybindings              Keybindings                  `yaml:\"keybindings\"`\n\tRepoPaths                map[string]string            `yaml:\"repoPaths\"`\n\tTheme                    *ThemeConfig                 `yaml:\"theme,omitempty\"           validate:\"omitempty\"`\n\tPager                    Pager                        `yaml:\"pager\"`\n\tConfirmQuit              bool                         `yaml:\"confirmQuit\"`\n\tShowAuthorIcons          bool                         `yaml:\"showAuthorIcons,omitempty\"`\n\tSmartFilteringAtLaunch   bool                         `yaml:\"smartFilteringAtLaunch\"                         default:\"true\"`\n\tIncludeReadNotifications bool                         `yaml:\"includeReadNotifications\"                       default:\"true\"`\n}\n\ntype configError struct {\n\tconfigDir string\n\tparser    ConfigParser\n\terr       error\n}\n\ntype ConfigParser struct {\n\tk *koanf.Koanf\n}\n\nfunc (parser ConfigParser) getDefaultConfig() Config {\n\treturn Config{\n\t\tDefaults: Defaults{\n\t\t\tPreview: PreviewConfig{\n\t\t\t\tOpen:  true,\n\t\t\t\tWidth: 0.45,\n\t\t\t},\n\t\t\tPrsLimit:               20,\n\t\t\tPrApproveComment:       \"LGTM\",\n\t\t\tIssuesLimit:            20,\n\t\t\tNotificationsLimit:     20,\n\t\t\tView:                   PRsView,\n\t\t\tRefetchIntervalMinutes: 30,\n\t\t\tLayout: LayoutConfig{\n\t\t\t\tPrs: PrsLayoutConfig{\n\t\t\t\t\tUpdatedAt: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(lipgloss.Width(\"2mo  \")),\n\t\t\t\t\t},\n\t\t\t\t\tCreatedAt: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(lipgloss.Width(\"2mo  \")),\n\t\t\t\t\t},\n\t\t\t\t\tRepo: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(20),\n\t\t\t\t\t},\n\t\t\t\t\tAuthor: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(15),\n\t\t\t\t\t},\n\t\t\t\t\tAuthorIcon: ColumnConfig{\n\t\t\t\t\t\tHidden: utils.BoolPtr(false),\n\t\t\t\t\t},\n\t\t\t\t\tAssignees: ColumnConfig{\n\t\t\t\t\t\tWidth:  utils.IntPtr(20),\n\t\t\t\t\t\tHidden: utils.BoolPtr(true),\n\t\t\t\t\t},\n\t\t\t\t\tBase: ColumnConfig{\n\t\t\t\t\t\tWidth:  utils.IntPtr(15),\n\t\t\t\t\t\tHidden: utils.BoolPtr(true),\n\t\t\t\t\t},\n\t\t\t\t\tLines: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(lipgloss.Width(\" +31.4k -31.6k \")),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIssues: IssuesLayoutConfig{\n\t\t\t\t\tUpdatedAt: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(lipgloss.Width(\"2mo  \")),\n\t\t\t\t\t},\n\t\t\t\t\tCreatedAt: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(lipgloss.Width(\"2mo  \")),\n\t\t\t\t\t},\n\t\t\t\t\tRepo: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(15),\n\t\t\t\t\t},\n\t\t\t\t\tCreator: ColumnConfig{\n\t\t\t\t\t\tWidth: utils.IntPtr(10),\n\t\t\t\t\t},\n\t\t\t\t\tCreatorIcon: ColumnConfig{\n\t\t\t\t\t\tHidden: utils.BoolPtr(false),\n\t\t\t\t\t},\n\t\t\t\t\tAssignees: ColumnConfig{\n\t\t\t\t\t\tWidth:  utils.IntPtr(20),\n\t\t\t\t\t\tHidden: utils.BoolPtr(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tRepo: RepoConfig{\n\t\t\tBranchesRefetchIntervalSeconds: 30,\n\t\t\tPrsRefetchIntervalSeconds:      60,\n\t\t},\n\t\tPRSections: []PrsSectionConfig{\n\t\t\t{\n\t\t\t\tTitle:   \"My Pull Requests\",\n\t\t\t\tFilters: \"is:open author:@me\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Needs My Review\",\n\t\t\t\tFilters: \"is:open review-requested:@me\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Involved\",\n\t\t\t\tFilters: \"is:open involves:@me -author:@me\",\n\t\t\t},\n\t\t},\n\t\tIssuesSections: []IssuesSectionConfig{\n\t\t\t{\n\t\t\t\tTitle:   \"My Issues\",\n\t\t\t\tFilters: \"is:open author:@me\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Assigned\",\n\t\t\t\tFilters: \"is:open assignee:@me\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Involved\",\n\t\t\t\tFilters: \"is:open involves:@me -author:@me\",\n\t\t\t},\n\t\t},\n\t\tNotificationsSections: []NotificationsSectionConfig{\n\t\t\t{\n\t\t\t\tTitle:   \"All\",\n\t\t\t\tFilters: \"\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Created\",\n\t\t\t\tFilters: \"reason:author\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Participating\",\n\t\t\t\tFilters: \"reason:participating\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Mentioned\",\n\t\t\t\tFilters: \"reason:mention\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Review Requested\",\n\t\t\t\tFilters: \"reason:review-requested\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Assigned\",\n\t\t\t\tFilters: \"reason:assign\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Subscribed\",\n\t\t\t\tFilters: \"reason:subscribed\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:   \"Team Mentioned\",\n\t\t\t\tFilters: \"reason:team-mention\",\n\t\t\t},\n\t\t},\n\t\tKeybindings: Keybindings{\n\t\t\tUniversal: []Keybinding{},\n\t\t\tIssues:    []Keybinding{},\n\t\t\tPrs:       []Keybinding{},\n\t\t},\n\t\tRepoPaths: map[string]string{},\n\t\tTheme: &ThemeConfig{\n\t\t\tUi: UIThemeConfig{\n\t\t\t\tSectionsShowCount: true,\n\t\t\t\tTable: TableUIThemeConfig{\n\t\t\t\t\tShowSeparator: true,\n\t\t\t\t\tCompact:       false,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tConfirmQuit:              false,\n\t\tShowAuthorIcons:          true,\n\t\tSmartFilteringAtLaunch:   true,\n\t\tIncludeReadNotifications: true,\n\t}\n}\n\nfunc (parser ConfigParser) getDefaultConfigYamlContents() (string, error) {\n\tdefaultConfig := parser.getDefaultConfig()\n\tlog.Debug(\"loading default config yaml contents\")\n\n\tb, err := yamlmarshaller.Marshal(defaultConfig)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(b), nil\n}\n\nfunc (e configError) Error() string {\n\tcontent, err := e.parser.getDefaultConfigYamlContents()\n\tif err != nil {\n\t\treturn fmt.Sprintf(\n\t\t\t\"encountered error while trying to generate default config yaml contents: %v\",\n\t\t\terr,\n\t\t)\n\t}\n\treturn fmt.Sprintf(\n\t\t`Couldn't find a config.yml or a config.yaml configuration file.\nCreate one under: %s\n\nExample of a config.yml file:\n%s\n\nFor more info, go to https://github.com/dlvhdr/gh-dash\npress q to exit.\n\nOriginal error: %v`,\n\t\tpath.Join(e.configDir, DashDir, ConfigYmlFileName),\n\t\tcontent,\n\t\te.err,\n\t)\n}\n\nfunc (parser ConfigParser) writeDefaultConfigContents(\n\tnewConfigFile *os.File,\n) error {\n\tcontent, err := parser.getDefaultConfigYamlContents()\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = newConfigFile.WriteString(content)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (parser ConfigParser) createConfigFileIfMissing(\n\tconfigFilePath string,\n) error {\n\tif _, err := os.Stat(configFilePath); os.IsNotExist(err) {\n\t\tlog.Info(\"default config doesn't exist - writing\", \"path\", configFilePath, \"err\", err)\n\n\t\tnewConfigFile, err := os.OpenFile(\n\t\t\tconfigFilePath,\n\t\t\tos.O_RDWR|os.O_CREATE|os.O_EXCL,\n\t\t\t0o666,\n\t\t)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tdefer newConfigFile.Close()\n\t\treturn parser.writeDefaultConfigContents(newConfigFile)\n\t}\n\n\treturn nil\n}\n\nfunc (parser ConfigParser) getGlobalConfigPathOrCreateIfMissing() (string, error) {\n\tconfigDir := os.Getenv(\"XDG_CONFIG_HOME\")\n\tif configDir == \"\" {\n\t\thomeDir, err := os.UserHomeDir()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tconfigDir = filepath.Join(homeDir, DEFAULT_XDG_CONFIG_DIRNAME)\n\t}\n\n\tconfigFilePath := filepath.Join(configDir, DashDir, ConfigYmlFileName)\n\tlog.Debug(\"using global config path\", \"path\", configFilePath)\n\n\t// Ensure directory exists before attempting to create file\n\tconfigDir = filepath.Dir(configFilePath)\n\tif _, err := os.Stat(configDir); os.IsNotExist(err) {\n\t\tif err = os.MkdirAll(configDir, os.ModePerm); err != nil {\n\t\t\treturn \"\", configError{\n\t\t\t\tparser:    parser,\n\t\t\t\tconfigDir: configDir,\n\t\t\t\terr:       err,\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := parser.createConfigFileIfMissing(configFilePath); err != nil {\n\t\treturn \"\", configError{parser: parser, configDir: configDir, err: err}\n\t}\n\n\treturn configFilePath, nil\n}\n\nfunc (parser ConfigParser) getProvidedConfigPath(location Location) string {\n\tvar userProvidedCfgPath string\n\t// First try the provided --config flag\n\tif location.ConfigFlag != \"\" {\n\t\tuserProvidedCfgPath = location.ConfigFlag\n\t} else if cfg := os.Getenv(\"GH_DASH_CONFIG\"); cfg != \"\" {\n\t\t// then try the GH_DASH_CONFIG env var\n\t\tuserProvidedCfgPath = cfg\n\t} else if location.RepoPath != \"\" {\n\t\t// Then try to see if we're currently in a git repo\n\t\tbasename := location.RepoPath + \"/.\" + DashDir\n\t\trepoConfigYml := basename + \".yml\"\n\t\trepoConfigYaml := basename + \".yaml\"\n\t\tif _, err := os.Stat(repoConfigYml); err == nil {\n\t\t\tuserProvidedCfgPath = repoConfigYml\n\t\t} else if _, err := os.Stat(repoConfigYaml); err == nil {\n\t\t\tuserProvidedCfgPath = repoConfigYaml\n\t\t}\n\t}\n\n\treturn userProvidedCfgPath\n}\n\nfunc (parser ConfigParser) loadGlobalConfig(globalCfgPath string) error {\n\treturn parser.k.Load(file.Provider(globalCfgPath), yaml.Parser())\n}\n\nfunc (parser ConfigParser) mergeConfigs(globalCfgPath, userProvidedCfgPath string) (Config, error) {\n\tif err := parser.loadGlobalConfig(globalCfgPath); err != nil {\n\t\treturn Config{}, parsingError{err: err, path: globalCfgPath}\n\t}\n\tlog.Info(\"Loaded global config\", \"path\", globalCfgPath)\n\tif err := parser.k.Load(\n\t\tfile.Provider(userProvidedCfgPath),\n\t\tyaml.Parser(),\n\t\tkoanf.WithMergeFunc(func(\n\t\t\toverrides, dest map[string]any,\n\t\t) error {\n\t\t\toverridesCopy := maps.Copy(overrides)\n\n\t\t\tuniversalKeybinds := mergeKeybindings(overrides, dest, \"universal\")\n\t\t\tprsKeybinds := mergeKeybindings(overrides, dest, \"prs\")\n\t\t\tissuesKeybinds := mergeKeybindings(overrides, dest, \"issues\")\n\n\t\t\tmaps.Merge(overrides, dest)\n\t\t\tdest[\"keybindings\"].(map[string]any)[\"universal\"] = universalKeybinds\n\t\t\tdest[\"keybindings\"].(map[string]any)[\"prs\"] = prsKeybinds\n\t\t\tdest[\"keybindings\"].(map[string]any)[\"issues\"] = issuesKeybinds\n\t\t\tdest[\"prSections\"] = overridesCopy[\"prSections\"]\n\t\t\tdest[\"issuesSections\"] = overridesCopy[\"issuesSections\"]\n\t\t\tdest[\"notificationsSections\"] = overridesCopy[\"notificationsSections\"]\n\n\t\t\treturn nil\n\t\t}),\n\t); err != nil {\n\t\treturn Config{}, parsingError{err: err, path: userProvidedCfgPath}\n\t}\n\tlog.Info(\"Loaded user provided config\", \"path\", userProvidedCfgPath)\n\n\treturn parser.unmarshalConfigWithDefaults()\n}\n\n// Make a union of keybinds, merging src into dest\n// Keybinds from src will override ones in dest.\nfunc mergeKeybindings(src, dest map[string]any, typ string) []map[string]string {\n\tif _, ok := src[\"keybindings\"].(map[string]any); !ok {\n\t\tsrc[\"keybindings\"] = make(map[string]any)\n\t}\n\tif _, ok := src[\"keybindings\"].(map[string]any)[typ]; !ok {\n\t\tsrc[\"keybindings\"].(map[string]any)[typ] = make([]any, 0)\n\t}\n\n\tif _, ok := dest[\"keybindings\"].(map[string]any); !ok {\n\t\tdest[\"keybindings\"] = make(map[string]any)\n\t}\n\tif _, ok := dest[\"keybindings\"].(map[string]any)[typ]; !ok {\n\t\tdest[\"keybindings\"].(map[string]any)[typ] = make([]any, 0)\n\t}\n\n\tkeybindsMap := make(map[string]map[string]string, 0)\n\tfor _, keybind := range src[\"keybindings\"].(map[string]any)[typ].([]any) {\n\t\tkeybind, ok := keybind.(map[string]any)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tcasted := make(map[string]string, 0)\n\t\tfor key, val := range keybind {\n\t\t\tif val, ok := val.(string); ok {\n\t\t\t\tcasted[key] = val\n\t\t\t}\n\t\t}\n\t\tkeybindsMap[keybind[\"key\"].(string)] = casted\n\t}\n\tfor _, keybind := range dest[\"keybindings\"].(map[string]any)[typ].([]any) {\n\t\tkeybind, ok := keybind.(map[string]any)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tkey, ok := keybind[\"key\"].(string)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := keybindsMap[key]; !ok {\n\t\t\tcasted := make(map[string]string, 0)\n\t\t\tfor key, val := range keybind {\n\t\t\t\tif val, ok := val.(string); ok {\n\t\t\t\t\tcasted[key] = val\n\t\t\t\t}\n\t\t\t}\n\t\t\tkeybindsMap[key] = casted\n\t\t}\n\t}\n\tmerged := make([]map[string]string, 0)\n\tfor _, keybind := range keybindsMap {\n\t\tmerged = append(merged, keybind)\n\t}\n\treturn merged\n}\n\ntype parsingError struct {\n\tpath string\n\terr  error\n}\n\nfunc (e parsingError) Error() string {\n\treturn fmt.Sprintf(\"failed parsing config at path %s with error %v\", e.path, e.err)\n}\n\nfunc validateColor(fl validator.FieldLevel) bool {\n\ts := fl.Field().String()\n\tif hexColorRegex.MatchString(s) {\n\t\treturn true\n\t}\n\tn, err := strconv.Atoi(s)\n\treturn err == nil && n >= 0 && n <= 255\n}\n\nfunc initParser() ConfigParser {\n\tvalidate = validator.New()\n\n\tvalidate.RegisterTagNameFunc(func(fld reflect.StructField) string {\n\t\tname := strings.Split(fld.Tag.Get(\"yaml\"), \",\")[0]\n\t\tif name == \"-\" {\n\t\t\treturn \"\"\n\t\t}\n\t\treturn name\n\t})\n\n\tvalidate.RegisterValidation(\"color\", validateColor)\n\n\treturn ConfigParser{\n\t\tk: koanf.NewWithConf(conf),\n\t}\n}\n\ntype Location struct {\n\tRepoPath         string // path if inside a git repo\n\tConfigFlag       string // Config passed with explicit --config flag\n\tSkipGlobalConfig bool   // Skip loading global config (for testing)\n}\n\nfunc ParseConfig(location Location) (Config, error) {\n\tparser := initParser()\n\n\tvar config Config\n\tvar err error\n\n\tuserProvidedCfgPath := parser.getProvidedConfigPath(location)\n\n\t// For testing: skip global config and load only the provided config\n\tif location.SkipGlobalConfig && userProvidedCfgPath != \"\" {\n\t\tif err := parser.k.Load(file.Provider(userProvidedCfgPath), yaml.Parser()); err != nil {\n\t\t\treturn Config{}, parsingError{path: userProvidedCfgPath, err: err}\n\t\t}\n\t\tlog.Info(\"Loaded user provided config (skipping global)\", \"path\", userProvidedCfgPath)\n\t\treturn parser.unmarshalConfigWithDefaults()\n\t}\n\n\tglobalCfgPath, err := parser.getGlobalConfigPathOrCreateIfMissing()\n\tif err != nil {\n\t\treturn config, parsingError{path: globalCfgPath, err: err}\n\t}\n\n\tif userProvidedCfgPath != \"\" {\n\t\tmergedCfg, err := parser.mergeConfigs(globalCfgPath, userProvidedCfgPath)\n\t\tif err != nil {\n\t\t\treturn Config{}, err\n\t\t}\n\t\treturn mergedCfg, nil\n\t}\n\n\tif err = parser.loadGlobalConfig(globalCfgPath); err != nil {\n\t\tlog.Error(\"failed loading global config\", \"err\", err)\n\t\treturn Config{}, parsingError{path: globalCfgPath, err: err}\n\t}\n\n\treturn parser.unmarshalConfigWithDefaults()\n}\n\nfunc (parser ConfigParser) unmarshalConfigWithDefaults() (Config, error) {\n\tcfg := parser.getDefaultConfig()\n\terr := parser.k.UnmarshalWithConf(\"\", &cfg, koanf.UnmarshalConf{Tag: \"yaml\"})\n\tif err != nil {\n\t\treturn Config{}, err\n\t}\n\n\trepoFF := IsFeatureEnabled(FF_REPO_VIEW)\n\tif cfg.Defaults.View == RepoView && !repoFF {\n\t\tcfg.Defaults.View = PRsView\n\t}\n\n\terr = validate.Struct(cfg)\n\treturn cfg, err\n}\n"
  },
  {
    "path": "internal/config/parser_test.go",
    "content": "package config\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"charm.land/log/v2\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/knadh/koanf/parsers/yaml\"\n\t\"github.com/knadh/koanf/providers/file\"\n\t\"github.com/knadh/koanf/v2\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/testutils\"\n)\n\n// See https://www.gh-dash.dev/configuration/#_top\n//  1. get default config file or create it if it's missing\n//     1.1. try GH_DASH_CONFIG\n//     1.2. then check if we're in a git repo\n//     1.2.1. try both `.yml` and `.yaml`\n//     1.3. try to look under `XDG_CONFIG_HOME`\n//     1.4. if not, try with `os.UserHomeDir()`\n//     1.5. if still doesn't exist, create with defaults\n//  2. read the config file\n//     2.1. read the file at the path\n//     2.2. validate the config\n\nconst repoPath = \"testdata\"\n\nfunc init() {\n\tlog.SetLevel(log.ErrorLevel)\n}\n\nvar keybindSorter = cmp.Transformer(\"Sort\", func(in []Keybinding) []Keybinding {\n\tout := append([]Keybinding(nil), in...) // Copy input to avoid mutating it\n\tsort.Slice(out, func(i, j int) bool {\n\t\treturn strings.Compare(out[i].Key, out[j].Key) == -1\n\t})\n\treturn out\n})\n\nfunc Testwd(t *testing.T) string {\n\t_, filename, _, _ := runtime.Caller(0)\n\treturn path.Dir(filename)\n}\n\nfunc TestParser(t *testing.T) {\n\tt.Run(\"Should create default config\", func(t *testing.T) {\n\t\tdir, err := os.MkdirTemp(\"\", \"config\")\n\t\ttestutils.AssertNoError(t, err)\n\t\tdefer os.RemoveAll(dir)\n\n\t\tos.Setenv(\"XDG_CONFIG_HOME\", dir)\n\t\tdefer func() {\n\t\t\tos.Unsetenv(\"XDG_CONFIG_HOME\")\n\t\t}()\n\n\t\tparsed, err := ParseConfig(Location{})\n\t\ttestutils.AssertNoError(t, err)\n\t\trequire.Len(t, parsed.PRSections, 3)\n\t})\n\n\tt.Run(\"Should read config passed by flag with highest priority\", func(t *testing.T) {\n\t\tclearXDGEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearXDGEnv()\n\t\tclearConfigEnv := setupConfigEnvVar(t)\n\t\tdefer clearConfigEnv()\n\n\t\tcwd := Testwd(t)\n\t\tparsed, err := ParseConfig(Location{\n\t\t\tRepoPath:   path.Join(cwd, repoPath),\n\t\t\tConfigFlag: path.Join(cwd, \"testdata/test-config.yml\"),\n\t\t})\n\n\t\ttestutils.AssertNoError(t, err)\n\t\trequire.Len(t, parsed.PRSections, 3)\n\t\trequire.Equal(t, \"#E2E1ED\", parsed.Theme.Colors.Inline.Text.Primary.String())\n\t})\n\n\tt.Run(\"Should then try GH_DASH_CONFIG env var\", func(t *testing.T) {\n\t\tclearXDGEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearXDGEnv()\n\t\tclearEnv := setupConfigEnvVar(t)\n\t\tdefer clearEnv()\n\n\t\tcwd := Testwd(t)\n\t\tparsed, err := ParseConfig(Location{\n\t\t\tRepoPath:   path.Join(cwd, repoPath),\n\t\t\tConfigFlag: \"\",\n\t\t})\n\n\t\trequire.Equal(t, err, nil)\n\t\trequire.Len(t, parsed.PRSections, 1)\n\t})\n\n\tt.Run(\"Should then try config in repo\", func(t *testing.T) {\n\t\tclearXDGEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearXDGEnv()\n\t\tcwd := Testwd(t)\n\t\tparsed, err := ParseConfig(Location{\n\t\t\tRepoPath:   path.Join(cwd, repoPath),\n\t\t\tConfigFlag: \"\",\n\t\t})\n\n\t\ttestutils.AssertNoError(t, err)\n\t\trequire.Len(t, parsed.PRSections, 2)\n\t})\n\n\tt.Run(\"Should then read global config\", func(t *testing.T) {\n\t\tclearXDGEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearXDGEnv()\n\t\tclearEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearEnv()\n\n\t\t// parse config in ./testdata/gh-dash/config.yml\n\t\tactual, err := ParseConfig(Location{})\n\t\ttestutils.AssertNoError(t, err)\n\n\t\texpected := loadExpected(t, \"./testdata/global-config.golden.yml\")\n\t\tassert.Empty(t, cmp.Diff(expected, actual, keybindSorter))\n\t})\n\n\tt.Run(\"Should merge global config with passed config\", func(t *testing.T) {\n\t\tclearEnv := setXDGConfigHomeEnvVar(t, \"testdata\")\n\t\tdefer clearEnv()\n\n\t\t// merge with config in ./testdata/gh-dash/config.yml\n\t\tcwd := Testwd(t)\n\t\tactual, err := ParseConfig(Location{\n\t\t\tConfigFlag: path.Join(cwd, \"./testdata/other-test-config.yml\"),\n\t\t})\n\t\ttestutils.AssertNoError(t, err)\n\n\t\texpected := loadExpected(t, \"./testdata/merged-config.golden.yml\")\n\t\tassert.Empty(t, cmp.Diff(expected, actual, keybindSorter))\n\t})\n\n\tt.Run(\"Should accept ANSI color indices in theme\", func(t *testing.T) {\n\t\tcwd := Testwd(t)\n\t\tparsed, err := ParseConfig(Location{\n\t\t\tConfigFlag:       path.Join(cwd, \"testdata/ansi-color-config.yml\"),\n\t\t\tSkipGlobalConfig: true,\n\t\t})\n\n\t\ttestutils.AssertNoError(t, err)\n\t\trequire.Equal(t, Color(\"12\"), parsed.Theme.Colors.Inline.Text.Primary)\n\t\trequire.Equal(t, Color(\"013\"), parsed.Theme.Colors.Inline.Border.Primary)\n\t\trequire.Equal(t, Color(\"008\"), parsed.Theme.Colors.Inline.Background.Selected)\n\t})\n}\n\nfunc loadExpected(t *testing.T, fpath string) Config {\n\tt.Helper()\n\tcwd := Testwd(t)\n\tk := koanf.NewWithConf(conf)\n\terr := k.Load(file.Provider(path.Join(cwd, fpath)), yaml.Parser())\n\ttestutils.AssertNoError(t, err)\n\n\texpected := Config{}\n\terr = k.UnmarshalWithConf(\"\", &expected, koanf.UnmarshalConf{Tag: \"yaml\"})\n\ttestutils.AssertNoError(t, err)\n\n\treturn expected\n}\n\nfunc setXDGConfigHomeEnvVar(t *testing.T, dir string) func() {\n\tt.Helper()\n\tcwd := Testwd(t)\n\tos.Setenv(\"XDG_CONFIG_HOME\", path.Join(cwd, dir))\n\treturn func() {\n\t\tos.Unsetenv(\"XDG_CONFIG_HOME\")\n\t}\n}\n\nfunc TestValidateColor(t *testing.T) {\n\t// initParser registers the custom \"color\" validator\n\tinitParser()\n\n\ttype testColor struct {\n\t\tVal Color `validate:\"omitempty,color\"`\n\t}\n\n\tvalid := []string{\n\t\t// hex colors\n\t\t\"#FFF\", \"#fff\", \"#a3c\", \"#FF0000\", \"#aa33cc\",\n\t\t// ANSI color indices (0-255)\n\t\t\"0\", \"1\", \"15\", \"16\", \"127\", \"255\",\n\t\t// with leading zeros (lipgloss treats identically via strconv.Atoi)\n\t\t\"000\", \"008\", \"013\", \"077\",\n\t\t// empty is allowed by omitempty\n\t\t\"\",\n\t}\n\tfor _, v := range valid {\n\t\terr := validate.Struct(testColor{Val: Color(v)})\n\t\tassert.NoErrorf(t, err, \"expected %q to be valid\", v)\n\t}\n\n\tinvalid := []string{\n\t\t\"256\", \"999\", \"-1\", // out of range\n\t\t\"abc\", \"red\", \"0xFF\", // not numeric, not hex format\n\t\t\"#GG00FF\", \"#12345\", // bad hex\n\t\t\"#1234567\", // too long\n\t}\n\tfor _, v := range invalid {\n\t\terr := validate.Struct(testColor{Val: Color(v)})\n\t\tassert.Errorf(t, err, \"expected %q to be invalid\", v)\n\t}\n}\n\nfunc setupConfigEnvVar(t *testing.T) func() {\n\tt.Helper()\n\tcwd := Testwd(t)\n\tos.Setenv(\"GH_DASH_CONFIG\", path.Join(cwd, \"testdata/other-test-config.yml\"))\n\treturn func() {\n\t\tos.Unsetenv(\"GH_DASH_CONFIG\")\n\t}\n}\n"
  },
  {
    "path": "internal/config/testdata/.gh-dash.yml",
    "content": "# yaml-language-server: $schema=https://dlvhdr.github.io/gh-dash/configuration/gh-dash/schema.json\nprSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash updated:>={{ nowModify \"-3w\" }} sort:updated-desc\n    layout:\n      author:\n        hidden: true\n      repoName:\n        hidden: true\n  - title: Review\n    filters: repo:dlvhdr/gh-dash -author:@me is:open updated:>={{ nowModify \"-2.5w\" }}\n    layout:\n      repoName:\n        hidden: true\n"
  },
  {
    "path": "internal/config/testdata/ansi-color-config.yml",
    "content": "prSections:\n  - title: My Pull Requests\n    filters: is:open author:@me\n\ntheme:\n  colors:\n    text:\n      primary: \"12\"\n      secondary: \"244\"\n      inverted: \"015\"\n      faint: \"245\"\n      warning: \"003\"\n      success: \"002\"\n    background:\n      selected: \"008\"\n    border:\n      primary: \"013\"\n      secondary: \"007\"\n      faint: \"000\"\n"
  },
  {
    "path": "internal/config/testdata/gh-dash/config.yml",
    "content": "# yaml-language-server: $schema=https://gh-dash.dev/schema.json\nprSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash updated:>={{ nowModify \"-3w\" }} sort:updated-desc\n  - title: Review\n    filters: repo:dlvhdr/gh-dash -author:@me is:open updated:>={{ nowModify \"-2.5w\" }}\n  - title: All\n    filters: repo:dlvhdr/gh-dash\nissuesSections:\n  - title: Open\n    filters: author:@me repo:dlvhdr/gh-dash is:open -author:@me sort:reactions\n  - title: Creator\n    filters: author:@me repo:dlvhdr/gh-dash is:open\n  - title: All\n    filters: repo:dlvhdr/gh-dash sort:reactions\n\npager:\n  diff: diffnav\ndefaults:\n  view: prs\n  refetchIntervalMinutes: 5\n  layout:\n    prs:\n      repoName:\n        hidden: false\n      base:\n        hidden: false\n\n  preview:\n    open: true\n    width: 60\n  prsLimit: 5\n  issuesLimit: 5\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\nconfirmQuit: false\n\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: >\n        cd {{.RepoPath}} && lazygit\n  prs:\n    - key: O\n      builtin: checkout\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n    - key: C\n      name: code review\n      command: >\n        tmux new-window -c {{.RepoPath}} '\n        nvim -c \":silent Octo pr edit {{.PrNumber}}\"\n        '\n    - key: T\n      command: >\n        tmux new-window -c /Users/dlvhdr/code/personal/gh-enhance '\n        task local-gh -- -R {{.RepoName}} {{.PrNumber}}\n        '\n    - key: a\n      name: lazygit add\n      command: >\n        cd {{.RepoPath}} && git add -A && lazygit\n    - key: v\n      name: approve\n      command: >\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n  issues:\n    - key: a\n      command: >-\n        gh issue open --repo {{.RepoName}} {{.PrNumber}}\n\ntheme:\n  ui:\n    sectionsShowCount: true\n    table:\n      compact: false\n  colors:\n    text:\n      primary: \"#FFFFFF\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#B0B3BF\"\n      warning: \"#E0AF68\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1B1B33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\n"
  },
  {
    "path": "internal/config/testdata/global-config.golden.yml",
    "content": "prSections:\n  - title: Mine\n    filters:\n      is:open author:@me repo:dlvhdr/gh-dash updated:>={{ nowModify \"-3w\" }}\n      sort:updated-desc\n    type: null\n  - title: Review\n    filters:\n      repo:dlvhdr/gh-dash -author:@me is:open updated:>={{ nowModify \"-2.5w\"\n      }}\n    type: null\n  - title: All\n    filters: repo:dlvhdr/gh-dash\n    type: null\nissuesSections:\n  - title: Open\n    filters: author:@me repo:dlvhdr/gh-dash is:open -author:@me sort:reactions\n  - title: Creator\n    filters: author:@me repo:dlvhdr/gh-dash is:open\n  - title: All\n    filters: repo:dlvhdr/gh-dash sort:reactions\nnotificationsSections:\n  - title: All\n    filters: \"\"\n  - title: Created\n    filters: \"reason:author\"\n  - title: Participating\n    filters: \"reason:participating\"\n  - title: Mentioned\n    filters: \"reason:mention\"\n  - title: Review Requested\n    filters: \"reason:review-requested\"\n  - title: Assigned\n    filters: \"reason:assign\"\n  - title: Subscribed\n    filters: \"reason:subscribed\"\n  - title: Team Mentioned\n    filters: \"reason:team-mention\"\nrepo:\n  branchesRefetchIntervalSeconds: 30\n  prsRefetchIntervalSeconds: 60\ndefaults:\n  preview:\n    open: true\n    width: 60\n  prsLimit: 5\n  prApproveComment: LGTM\n  issuesLimit: 5\n  notificationsLimit: 20\n  view: prs\n  layout:\n    prs:\n      updatedAt:\n        width: 5\n      createdAt:\n        width: 5\n      repo:\n        width: 20\n      author:\n        width: 15\n      authorIcon:\n        hidden: false\n      assignees:\n        width: 20\n        hidden: true\n      base:\n        width: 15\n        hidden: false\n      lines:\n        width: 15\n    issues:\n      updatedAt:\n        width: 5\n      createdAt:\n        width: 5\n      repo:\n        width: 15\n      creator:\n        width: 10\n      creatorIcon:\n        hidden: false\n      assignees:\n        width: 20\n        hidden: true\n  refetchIntervalMinutes: 5\nkeybindings:\n  universal:\n    - key: g\n      command: |\n        cd {{.RepoPath}} && lazygit\n      builtin: \"\"\n      name: lazygit\n  prs:\n    - key: O\n      command: \"\"\n      builtin: checkout\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n      builtin: \"\"\n    - key: C\n      command: |\n        tmux new-window -c {{.RepoPath}} ' nvim -c \":silent Octo pr edit {{.PrNumber}}\" '\n      builtin: \"\"\n      name: code review\n    - key: T\n      command: |\n        tmux new-window -c /Users/dlvhdr/code/personal/gh-enhance ' task local-gh -- -R {{.RepoName}} {{.PrNumber}} '\n      builtin: \"\"\n    - key: a\n      command: |\n        cd {{.RepoPath}} && git add -A && lazygit\n      builtin: \"\"\n      name: lazygit add\n    - key: v\n      command: |\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n      builtin: \"\"\n      name: approve\n  issues:\n    - key: a\n      command: >-\n        gh issue open --repo {{.RepoName}} {{.PrNumber}}\n  branches: []\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\ntheme:\n  ui:\n    sectionsShowCount: true\n    table:\n      showSeparator: true\n      compact: false\n  colors:\n    icon:\n      newcontributor: \"\"\n      contributor: \"\"\n      collaborator: \"\"\n      member: \"\"\n      owner: \"\"\n      unknownrole: \"\"\n    text:\n      primary: \"#FFFFFF\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#B0B3BF\"\n      warning: \"#E0AF68\"\n      success: \"#3DF294\"\n      error: \"\"\n    background:\n      selected: \"#1B1B33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\npager:\n  diff: diffnav\nconfirmQuit: false\nshowAuthorIcons: true\nsmartFilteringAtLaunch: true\nincludeReadNotifications: true\n"
  },
  {
    "path": "internal/config/testdata/merged-config.golden.yml",
    "content": "prSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash\n    layout:\n      repo:\n        hidden: true\n      author:\n        hidden: true\nissuesSections:\n  - title: Open\n    filters: author:@me -author:@me sort:reactions\nnotificationsSections:\n  - title: All\n    filters: \"\"\n  - title: Created\n    filters: \"reason:author\"\n  - title: Participating\n    filters: \"reason:participating\"\n  - title: Mentioned\n    filters: \"reason:mention\"\n  - title: Review Requested\n    filters: \"reason:review-requested\"\n  - title: Assigned\n    filters: \"reason:assign\"\n  - title: Subscribed\n    filters: \"reason:subscribed\"\n  - title: Team Mentioned\n    filters: \"reason:team-mention\"\nrepo:\n  branchesRefetchIntervalSeconds: 30\n  prsRefetchIntervalSeconds: 60\ndefaults:\n  prApproveComment: LGTM\n  preview:\n    open: true\n    width: 80\n  prsLimit: 100\n  issuesLimit: 100\n  notificationsLimit: 100\n  view: prs\n  layout:\n    prs:\n      updatedAt:\n        width: 5\n      createdAt:\n        width: 5\n      repo:\n        width: 20\n        hidden: true\n      author:\n        width: 15\n      authorIcon:\n        hidden: false\n      assignees:\n        width: 20\n        hidden: true\n      base:\n        width: 15\n        hidden: true\n      lines:\n        width: 15\n    issues:\n      updatedAt:\n        width: 5\n      createdAt:\n        width: 5\n      repo:\n        width: 15\n      creator:\n        width: 10\n      creatorIcon:\n        hidden: false\n      assignees:\n        width: 20\n        hidden: true\n  refetchIntervalMinutes: 10\nkeybindings:\n  universal:\n    - key: \"n\"\n      command: gh pr create\n    - key: g\n      command: |\n        cd {{.RepoPath}} && lazygit\n      name: lazygit\n    - key: O\n      command: open {{.RepoPath}}\n      name: show in finder\n    - key: G\n      command: >-\n        gh dummy command\n  prs:\n    - key: O\n      builtin: comment\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n    - key: C\n      command: |\n        tmux new-window -c {{.RepoPath}} ' nvim -c \":silent Octo pr edit {{.PrNumber}}\" '\n      name: code review\n    - key: T\n      command: |\n        tmux new-window -c /Users/dlvhdr/code/personal/gh-enhance ' task local-gh -- -R {{.RepoName}} {{.PrNumber}} '\n    - key: a\n      command: |\n        cd {{.RepoPath}} && git add -A && lazygit\n      name: lazygit add\n    - key: v\n      command: |\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n      name: approve\n    - key: N\n      command: echo \"new command\"\n  issues:\n    - key: a\n      command: >-\n        gh issue open --repo {{.RepoName}} {{.PrNumber}}\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\ntheme:\n  ui:\n    sectionsShowCount: true\n    table:\n      compact: false\n      showSeparator: true\n  colors:\n    text:\n      primary: \"#FF0000\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#B0B3BF\"\n      warning: \"#E0AF68\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1B1B33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\npager:\n  diff: diffnav\nconfirmQuit: true\nshowAuthorIcons: true\nsmartFilteringAtLaunch: true\nincludeReadNotifications: true\n"
  },
  {
    "path": "internal/config/testdata/other-test-config.yml",
    "content": "# yaml-language-server: $schema=https://gh-dash.dev/schema.json\nprSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash\n    layout:\n      author:\n        hidden: true\n      repo:\n        hidden: true\nissuesSections:\n  - title: Open\n    filters: author:@me -author:@me sort:reactions\n\nconfirmQuit: true\n\ndefaults:\n  view: prs\n  preview:\n    width: 80\n  refetchIntervalMinutes: 10\n  layout:\n    prs:\n      repo:\n        hidden: true\n      base:\n        hidden: true\n  prsLimit: 100\n  issuesLimit: 100\n  notificationsLimit: 100\n\ntheme:\n  colors:\n    text:\n      primary: \"#FF0000\"\n\nkeybindings:\n  universal:\n    - key: O\n      name: show in finder\n      command: >-\n        open {{.RepoPath}}\n    - key: n\n      command: >-\n        gh pr create\n    - key: G\n      command: >-\n        gh dummy command\n  prs:\n    - key: O\n      builtin: comment\n    - key: N\n      command: echo \"new command\"\n"
  },
  {
    "path": "internal/config/testdata/test-config.yml",
    "content": "# yaml-language-server: $schema=https://gh-dash.dev/schema.json\nprSections:\n  - title: Mine\n    filters: is:open author:@me repo:dlvhdr/gh-dash updated:>={{ nowModify \"-3w\" }} sort:updated-desc\n    layout:\n      author:\n        hidden: true\n      repoName:\n        hidden: true\n  - title: Review\n    filters: repo:dlvhdr/gh-dash -author:@me is:open updated:>={{ nowModify \"-2.5w\" }}\n    layout:\n      repoName:\n        hidden: true\n  - title: All\n    filters: repo:dlvhdr/gh-dash\n    layout:\n      repoName:\n        hidden: true\nissuesSections:\n  - title: Open\n    filters: author:@me repo:dlvhdr/gh-dash is:open -author:@me sort:reactions\n  - title: Creator\n    filters: author:@me repo:dlvhdr/gh-dash is:open\n  - title: All\n    filters: repo:dlvhdr/gh-dash sort:reactions\n\npager:\n  diff: diffnav\ndefaults:\n  view: prs\n  refetchIntervalMinutes: 5\n  layout:\n    prs:\n      repoName:\n        hidden: true\n      base:\n        hidden: true\n\n  preview:\n    open: true\n    width: 60\n  prsLimit: 5\n  issuesLimit: 5\nrepoPaths:\n  dlvhdr/*: ~/code/personal/*\nconfirmQuit: false\n\nkeybindings:\n  universal:\n    - key: g\n      name: lazygit\n      command: >\n        cd {{.RepoPath}} && lazygit\n  prs:\n    - key: O\n      builtin: checkout\n    - key: m\n      command: gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}\n    - key: C\n      name: code review\n      command: >\n        tmux new-window -c {{.RepoPath}} '\n        nvim -c \":silent Octo pr edit {{.PrNumber}}\"\n        '\n    - key: T\n      command: >\n        tmux new-window -c /Users/dlvhdr/code/personal/gh-enhance '\n        task local-gh -- -R {{.RepoName}} {{.PrNumber}}\n        '\n    # - key: b\n    #   name: code review\n    #   command: cd {{.RepoPath}} && gh pr view {{.PrNumber}} --json statusCheckRollup | command jq -rcj '.statusCheckRollup.[] | select(.context == \"buildkite/mono\") | .targetUrl' | xargs open\n    - key: a\n      name: lazygit add\n      command: >\n        cd {{.RepoPath}} && git add -A && lazygit\n    - key: v\n      name: approve\n      command: >\n        gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}\n\ntheme:\n  ui:\n    sectionsShowCount: true\n    table:\n      compact: false\n  colors:\n    text:\n      primary: \"#E2E1ED\"\n      secondary: \"#666CA6\"\n      inverted: \"#242347\"\n      faint: \"#B0B3BF\"\n      warning: \"#E0AF68\"\n      success: \"#3DF294\"\n    background:\n      selected: \"#1B1B33\"\n    border:\n      primary: \"#383B5B\"\n      secondary: \"#39386B\"\n      faint: \"#2B2B40\"\n"
  },
  {
    "path": "internal/config/utils.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc (cfg Config) GetFullScreenDiffPagerEnv() []string {\n\tdiff := cfg.Pager.Diff\n\tif diff == \"\" {\n\t\tdiff = \"less\"\n\t}\n\tif diff == \"delta\" {\n\t\tdiff = \"delta --paging always\"\n\t}\n\n\tenv := os.Environ()\n\tenv = append(\n\t\tenv,\n\t\t\"LESS=CRX\",\n\t\tfmt.Sprintf(\n\t\t\t\"GH_PAGER=%s\",\n\t\t\tdiff,\n\t\t),\n\t)\n\n\treturn env\n}\n\nfunc (cfg PrsSectionConfig) ToSectionConfig() SectionConfig {\n\treturn SectionConfig{\n\t\tTitle:   cfg.Title,\n\t\tFilters: cfg.Filters,\n\t\tLimit:   cfg.Limit,\n\t\tType:    cfg.Type,\n\t}\n}\n\nfunc (cfg IssuesSectionConfig) ToSectionConfig() SectionConfig {\n\treturn SectionConfig{\n\t\tTitle:   cfg.Title,\n\t\tFilters: cfg.Filters,\n\t\tLimit:   cfg.Limit,\n\t}\n}\n\nfunc (cfg NotificationsSectionConfig) ToSectionConfig() SectionConfig {\n\treturn SectionConfig{\n\t\tTitle:   cfg.Title,\n\t\tFilters: cfg.Filters,\n\t\tLimit:   cfg.Limit,\n\t}\n}\n\nfunc MergeColumnConfigs(defaultCfg, sectionCfg ColumnConfig) ColumnConfig {\n\tcolCfg := defaultCfg\n\tif sectionCfg.Width != nil {\n\t\tcolCfg.Width = sectionCfg.Width\n\t}\n\tif sectionCfg.Hidden != nil {\n\t\tcolCfg.Hidden = sectionCfg.Hidden\n\t}\n\treturn colCfg\n}\n\nfunc TruncateCommand(cmd string) string {\n\tcmd = strings.ReplaceAll(cmd, \"\\n\", \"\")\n\tif len(cmd) > 30 {\n\t\treturn cmd[:30] + \"...\"\n\t}\n\treturn cmd\n}\n"
  },
  {
    "path": "internal/data/assignee.go",
    "content": "package data\n\ntype Assignees struct {\n\tNodes []Assignee\n}\n\ntype Assignee struct {\n\tLogin string\n}\n"
  },
  {
    "path": "internal/data/bookmarks.go",
    "content": "package data\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"charm.land/log/v2\"\n)\n\nconst (\n\tdefaultXDGStateDir = \".local/state\"\n\tdashDir            = \"gh-dash\"\n)\n\n// NotificationIDStore is a generic store for persisting sets of notification IDs.\n// Used for bookmarks, done notifications, and similar features.\ntype NotificationIDStore struct {\n\tmu       sync.RWMutex\n\tids      map[string]bool\n\tfilePath string\n\tname     string // for logging\n}\n\nfunc newNotificationIDStore(filename, name string) *NotificationIDStore {\n\tstore := &NotificationIDStore{\n\t\tids:  make(map[string]bool),\n\t\tname: name,\n\t}\n\tfilePath, err := getStateFilePath(filename)\n\tif err != nil {\n\t\tlog.Error(\"Failed to get state file path for \"+name, \"err\", err)\n\t}\n\tstore.filePath = filePath\n\tif err := store.load(); err != nil {\n\t\tlog.Error(\"Failed to load \"+name, \"err\", err)\n\t}\n\treturn store\n}\n\nfunc getStateFilePath(filename string) (string, error) {\n\tstateDir := os.Getenv(\"XDG_STATE_HOME\")\n\tif stateDir == \"\" {\n\t\thomeDir, err := os.UserHomeDir()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tstateDir = filepath.Join(homeDir, defaultXDGStateDir)\n\t}\n\treturn filepath.Join(stateDir, dashDir, filename), nil\n}\n\nfunc (s *NotificationIDStore) load() error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tif s.filePath == \"\" {\n\t\treturn nil\n\t}\n\n\tdata, err := os.ReadFile(s.filePath)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\tvar idList []string\n\tif err := json.Unmarshal(data, &idList); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, id := range idList {\n\t\ts.ids[id] = true\n\t}\n\tlog.Debug(\"Loaded \"+s.name, \"count\", len(s.ids))\n\treturn nil\n}\n\nfunc (s *NotificationIDStore) save() error {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\tif s.filePath == \"\" {\n\t\treturn nil\n\t}\n\n\tidList := make([]string, 0, len(s.ids))\n\tfor id := range s.ids {\n\t\tidList = append(idList, id)\n\t}\n\n\tdata, err := json.MarshalIndent(idList, \"\", \"  \")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdir := filepath.Dir(s.filePath)\n\tif err := os.MkdirAll(dir, 0o755); err != nil {\n\t\treturn err\n\t}\n\n\t// Use atomic write: write to temp file, then rename.\n\t// This prevents races when multiple async saves run concurrently.\n\ttmpFile, err := os.CreateTemp(dir, \".tmp-*\")\n\tif err != nil {\n\t\treturn err\n\t}\n\ttmpPath := tmpFile.Name()\n\tif _, err := tmpFile.Write(data); err != nil {\n\t\ttmpFile.Close()\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\tif err := tmpFile.Close(); err != nil {\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\tif err := os.Rename(tmpPath, s.filePath); err != nil {\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\n\tlog.Debug(\"Saved \"+s.name, \"count\", len(idList))\n\treturn nil\n}\n\n// Has checks if an ID is in the store\nfunc (s *NotificationIDStore) Has(id string) bool {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\treturn s.ids[id]\n}\n\n// Add adds an ID to the store\nfunc (s *NotificationIDStore) Add(id string) {\n\ts.mu.Lock()\n\ts.ids[id] = true\n\ts.mu.Unlock()\n\tgo s.save() // Async save to avoid blocking UI\n}\n\n// Remove removes an ID from the store\nfunc (s *NotificationIDStore) Remove(id string) {\n\ts.mu.Lock()\n\tdelete(s.ids, id)\n\ts.mu.Unlock()\n\tgo s.save() // Async save to avoid blocking UI\n}\n\n// Toggle toggles an ID in the store, returns the new state\nfunc (s *NotificationIDStore) Toggle(id string) bool {\n\ts.mu.Lock()\n\tnewState := !s.ids[id]\n\tif newState {\n\t\ts.ids[id] = true\n\t} else {\n\t\tdelete(s.ids, id)\n\t}\n\ts.mu.Unlock()\n\tgo s.save() // Async save to avoid blocking UI\n\treturn newState\n}\n\n// GetAll returns all IDs in the store\nfunc (s *NotificationIDStore) GetAll() []string {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\tids := make([]string, 0, len(s.ids))\n\tfor id := range s.ids {\n\t\tids = append(ids, id)\n\t}\n\treturn ids\n}\n\n// Flush forces an immediate synchronous save. Useful for testing.\nfunc (s *NotificationIDStore) Flush() error {\n\treturn s.save()\n}\n\n// Singleton for bookmark store\n\nvar (\n\tbookmarkStore     *NotificationIDStore\n\tbookmarkStoreOnce sync.Once\n)\n\n// GetBookmarkStore returns the singleton bookmark store\nfunc GetBookmarkStore() *NotificationIDStore {\n\tbookmarkStoreOnce.Do(func() {\n\t\tbookmarkStore = newNotificationIDStore(\"bookmarks.json\", \"bookmarks\")\n\t})\n\treturn bookmarkStore\n}\n\n// Convenience methods for BookmarkStore (maintains API compatibility)\n\n// IsBookmarked checks if a notification is bookmarked\nfunc (s *NotificationIDStore) IsBookmarked(id string) bool {\n\treturn s.Has(id)\n}\n\n// ToggleBookmark toggles the bookmark state\nfunc (s *NotificationIDStore) ToggleBookmark(id string) bool {\n\treturn s.Toggle(id)\n}\n\n// GetBookmarkedIds returns all bookmarked IDs\nfunc (s *NotificationIDStore) GetBookmarkedIds() []string {\n\treturn s.GetAll()\n}\n"
  },
  {
    "path": "internal/data/bookmarks_test.go",
    "content": "package data\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\nfunc TestNotificationIDStore(t *testing.T) {\n\t// Create a temp directory for test files\n\ttempDir, err := os.MkdirTemp(\"\", \"gh-dash-test\")\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to create temp dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(tempDir)\n\n\ttestFile := filepath.Join(tempDir, \"test-store.json\")\n\n\tt.Run(\"new store is empty\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tif store.Has(\"id1\") {\n\t\t\tt.Error(\"New store should not have any IDs\")\n\t\t}\n\t\tif len(store.GetAll()) != 0 {\n\t\t\tt.Error(\"New store should return empty list\")\n\t\t}\n\t})\n\n\tt.Run(\"Add and Has\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tstore.Add(\"id1\")\n\t\tif !store.Has(\"id1\") {\n\t\t\tt.Error(\"Store should have id1 after Add\")\n\t\t}\n\t\tif store.Has(\"id2\") {\n\t\t\tt.Error(\"Store should not have id2\")\n\t\t}\n\t})\n\n\tt.Run(\"Remove\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tstore.Add(\"id1\")\n\t\tstore.Remove(\"id1\")\n\t\tif store.Has(\"id1\") {\n\t\t\tt.Error(\"Store should not have id1 after Remove\")\n\t\t}\n\t})\n\n\tt.Run(\"Toggle\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\t// Toggle on\n\t\tif !store.Toggle(\"id1\") {\n\t\t\tt.Error(\"First toggle should return true\")\n\t\t}\n\t\tif !store.Has(\"id1\") {\n\t\t\tt.Error(\"Store should have id1 after toggle on\")\n\t\t}\n\n\t\t// Toggle off\n\t\tif store.Toggle(\"id1\") {\n\t\t\tt.Error(\"Second toggle should return false\")\n\t\t}\n\t\tif store.Has(\"id1\") {\n\t\t\tt.Error(\"Store should not have id1 after toggle off\")\n\t\t}\n\t})\n\n\tt.Run(\"GetAll\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tstore.Add(\"id1\")\n\t\tstore.Add(\"id2\")\n\t\tstore.Add(\"id3\")\n\n\t\tall := store.GetAll()\n\t\tif len(all) != 3 {\n\t\t\tt.Errorf(\"GetAll should return 3 IDs, got %d\", len(all))\n\t\t}\n\n\t\t// Check all IDs are present (order not guaranteed)\n\t\tfound := make(map[string]bool)\n\t\tfor _, id := range all {\n\t\t\tfound[id] = true\n\t\t}\n\t\tfor _, id := range []string{\"id1\", \"id2\", \"id3\"} {\n\t\t\tif !found[id] {\n\t\t\t\tt.Errorf(\"GetAll should include %s\", id)\n\t\t\t}\n\t\t}\n\t})\n\n\tt.Run(\"persistence\", func(t *testing.T) {\n\t\tpersistFile := filepath.Join(tempDir, \"persist-test.json\")\n\n\t\t// Create store, add IDs, flush to ensure save completes\n\t\tstore1 := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: persistFile,\n\t\t\tname:     \"test\",\n\t\t}\n\t\tstore1.Add(\"persist1\")\n\t\tstore1.Add(\"persist2\")\n\t\tif err := store1.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Failed to flush: %v\", err)\n\t\t}\n\n\t\t// Create new store, load from same file\n\t\tstore2 := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: persistFile,\n\t\t\tname:     \"test\",\n\t\t}\n\t\tif err := store2.load(); err != nil {\n\t\t\tt.Fatalf(\"Failed to load: %v\", err)\n\t\t}\n\n\t\tif !store2.Has(\"persist1\") {\n\t\t\tt.Error(\"Loaded store should have persist1\")\n\t\t}\n\t\tif !store2.Has(\"persist2\") {\n\t\t\tt.Error(\"Loaded store should have persist2\")\n\t\t}\n\t})\n\n\tt.Run(\"convenience methods\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\t// Bookmark convenience methods\n\t\tstore.Add(\"bookmark1\")\n\t\tif !store.IsBookmarked(\"bookmark1\") {\n\t\t\tt.Error(\"IsBookmarked should return true\")\n\t\t}\n\t\tif store.ToggleBookmark(\"bookmark1\") {\n\t\t\tt.Error(\"ToggleBookmark should return false (toggled off)\")\n\t\t}\n\t\tif len(store.GetBookmarkedIds()) != 0 {\n\t\t\tt.Error(\"GetBookmarkedIds should be empty after toggle off\")\n\t\t}\n\t})\n\n\tt.Run(\"load from non-existent file\", func(t *testing.T) {\n\t\tnonExistentFile := filepath.Join(tempDir, \"non-existent.json\")\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: nonExistentFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\t// load should not error for non-existent file, just return empty store\n\t\terr := store.load()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"load() from non-existent file should not error, got: %v\", err)\n\t\t}\n\t\tif len(store.GetAll()) != 0 {\n\t\t\tt.Error(\"store should be empty after loading from non-existent file\")\n\t\t}\n\t})\n\n\tt.Run(\"load from empty file\", func(t *testing.T) {\n\t\temptyFile := filepath.Join(tempDir, \"empty.json\")\n\t\tif err := os.WriteFile(emptyFile, []byte(\"\"), 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to create empty file: %v\", err)\n\t\t}\n\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: emptyFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\terr := store.load()\n\t\t// Empty file should either be handled gracefully or return an error\n\t\t// The important thing is it doesn't panic\n\t\tif err != nil {\n\t\t\t// This is acceptable - empty file is not valid JSON\n\t\t\tt.Logf(\"load() from empty file returned error (expected): %v\", err)\n\t\t}\n\t})\n\n\tt.Run(\"load from corrupted JSON\", func(t *testing.T) {\n\t\tcorruptedFile := filepath.Join(tempDir, \"corrupted.json\")\n\t\tif err := os.WriteFile(corruptedFile, []byte(\"{invalid json\"), 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to create corrupted file: %v\", err)\n\t\t}\n\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: corruptedFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\terr := store.load()\n\t\tif err == nil {\n\t\t\tt.Error(\"load() from corrupted JSON should return error\")\n\t\t}\n\t})\n\n\tt.Run(\"Add same ID multiple times\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tstore.Add(\"id1\")\n\t\tstore.Add(\"id1\")\n\t\tstore.Add(\"id1\")\n\n\t\t// Should still only have one ID\n\t\tall := store.GetAll()\n\t\tif len(all) != 1 {\n\t\t\tt.Errorf(\"Adding same ID multiple times should result in 1 entry, got %d\", len(all))\n\t\t}\n\t})\n\n\tt.Run(\"Remove non-existent ID\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\t// Should not panic or error\n\t\tstore.Remove(\"non-existent\")\n\t\tif store.Has(\"non-existent\") {\n\t\t\tt.Error(\"Has should return false for non-existent ID\")\n\t\t}\n\t})\n\n\tt.Run(\"empty string ID\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: testFile,\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tstore.Add(\"\")\n\t\t// Empty string should be handled (though it's an edge case)\n\t\tif !store.Has(\"\") {\n\t\t\tt.Error(\"Store should have empty string ID after Add\")\n\t\t}\n\t})\n\n\tt.Run(\"special characters in ID\", func(t *testing.T) {\n\t\tstore := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: filepath.Join(tempDir, \"special-chars.json\"),\n\t\t\tname:     \"test\",\n\t\t}\n\n\t\tspecialIds := []string{\n\t\t\t\"id-with-dash\",\n\t\t\t\"id_with_underscore\",\n\t\t\t\"id.with.dots\",\n\t\t\t\"id:with:colons\",\n\t\t\t\"id/with/slashes\",\n\t\t\t\"12345678901234567890\", // long numeric ID\n\t\t}\n\n\t\tfor _, id := range specialIds {\n\t\t\tstore.Add(id)\n\t\t}\n\n\t\t// Verify all were added\n\t\tfor _, id := range specialIds {\n\t\t\tif !store.Has(id) {\n\t\t\t\tt.Errorf(\"Store should have ID %q\", id)\n\t\t\t}\n\t\t}\n\n\t\t// Flush to ensure async save completes before testing persistence\n\t\tif err := store.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Failed to flush: %v\", err)\n\t\t}\n\n\t\t// Test persistence with special characters\n\t\tstore2 := &NotificationIDStore{\n\t\t\tids:      make(map[string]bool),\n\t\t\tfilePath: filepath.Join(tempDir, \"special-chars.json\"),\n\t\t\tname:     \"test\",\n\t\t}\n\t\tif err := store2.load(); err != nil {\n\t\t\tt.Fatalf(\"Failed to load: %v\", err)\n\t\t}\n\n\t\tfor _, id := range specialIds {\n\t\t\tif !store2.Has(id) {\n\t\t\t\tt.Errorf(\"Loaded store should have ID %q\", id)\n\t\t\t}\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/data/cache.go",
    "content": "package data\n\nimport (\n\t\"time\"\n\n\t\"github.com/maypok86/otter/v2\"\n)\n\ntype Cache struct {\n\t*otter.Cache[string, string]\n}\n\nvar cache = Cache{}\n\nfunc New() Cache {\n\tcache := otter.Must(&otter.Options[string, string]{\n\t\tMaximumSize: 10_000,\n\t\tExpiryCalculator: otter.ExpiryAccessing[string, string](\n\t\t\ttime.Second,\n\t\t), // Reset timer on reads/writes\n\t\tRefreshCalculator: otter.RefreshWriting[string, string](\n\t\t\t500 * time.Millisecond,\n\t\t), // Refresh after writes\n\t})\n\n\treturn Cache{\n\t\tcache,\n\t}\n}\n\nfunc Get() Cache {\n\treturn cache\n}\n"
  },
  {
    "path": "internal/data/commonapi.go",
    "content": "package data\n\nimport (\n\t\"charm.land/log/v2\"\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n)\n\ntype VersionResponse struct {\n\tRepository struct {\n\t\tLatestRelease struct {\n\t\t\tTagName string\n\t\t}\n\t} `graphql:\"repository(owner: $owner, name: $name)\"`\n}\n\nfunc FetchLatestVersion() (VersionResponse, error) {\n\tvar queryResult VersionResponse\n\tvar err error\n\tif client == nil {\n\t\tclient, err = gh.DefaultGraphQLClient()\n\t}\n\tif err != nil {\n\t\treturn VersionResponse{}, err\n\t}\n\n\tvariables := map[string]any{\n\t\t\"owner\": graphql.String(\"dlvhdr\"),\n\t\t\"name\":  graphql.String(\"gh-dash\"),\n\t}\n\n\tlog.Debug(\"Fetching latest version\")\n\terr = client.Query(\"LatestVersion\", &queryResult, variables)\n\tif err != nil {\n\t\treturn VersionResponse{}, err\n\t}\n\tlog.Info(\"Successfully fetched latest version\", \"version\",\n\t\tqueryResult.Repository.LatestRelease.TagName)\n\n\treturn queryResult, nil\n}\n\ntype SponsorsResponse struct {\n\tUser struct {\n\t\tSponsors struct {\n\t\t\tNodes []struct {\n\t\t\t\tTypename string `graphql:\"__typename\"`\n\t\t\t\tUser     struct {\n\t\t\t\t\tLogin string\n\t\t\t\t\tUrl   string\n\t\t\t\t} `graphql:\"... on User\"`\n\t\t\t\tOrganization struct {\n\t\t\t\t\tName string\n\t\t\t\t\tUrl  string\n\t\t\t\t} `graphql:\"... on Organization\"`\n\t\t\t}\n\t\t} `graphql:\"sponsors(first: 100)\"`\n\t} `graphql:\"user(login: $login)\"`\n}\n\nfunc FetchSponsors() (SponsorsResponse, error) {\n\tvar queryResult SponsorsResponse\n\tvar err error\n\tif client == nil {\n\t\tclient, err = gh.DefaultGraphQLClient()\n\t}\n\tif err != nil {\n\t\treturn SponsorsResponse{}, err\n\t}\n\n\tvariables := map[string]any{\n\t\t\"login\": graphql.String(\"dlvhdr\"),\n\t}\n\n\tlog.Debug(\"Fetching sponsors\")\n\terr = client.Query(\"Sponsors\", &queryResult, variables)\n\tif err != nil {\n\t\treturn SponsorsResponse{}, err\n\t}\n\tlog.Info(\"Successfully fetched sponsors\")\n\n\treturn queryResult, nil\n}\n"
  },
  {
    "path": "internal/data/donestore.go",
    "content": "package data\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"time\"\n\n\t\"charm.land/log/v2\"\n)\n\n// DoneStore persists notification IDs along with the timestamp at which they\n// were marked done. When checking whether a notification is still \"done\" we\n// compare the stored timestamp against the notification's current updated_at:\n// if the notification has been updated since it was marked done, it resurfaces.\ntype DoneStore struct {\n\tmu       sync.RWMutex\n\tentries  map[string]time.Time // id -> updatedAt when marked done\n\tfilePath string\n}\n\nfunc newDoneStore(filename string) *DoneStore {\n\tstore := &DoneStore{\n\t\tentries: make(map[string]time.Time),\n\t}\n\tfilePath, err := getStateFilePath(filename)\n\tif err != nil {\n\t\tlog.Error(\"Failed to get state file path for done notifications\", \"err\", err)\n\t}\n\tstore.filePath = filePath\n\tif err := store.load(); err != nil {\n\t\tlog.Error(\"Failed to load done notifications\", \"err\", err)\n\t}\n\treturn store\n}\n\n// load reads the done store from disk. It supports two on-disk formats:\n//   - New: {\"id\": \"2024-01-15T10:30:00Z\", ...}  (map of ID → RFC 3339 timestamp)\n//   - Legacy: [\"id1\", \"id2\", ...]                (plain array of IDs)\n//\n// Legacy entries are assigned the zero time, so they resurface on the\n// first load after upgrade. Once re-marked as done they get proper timestamps.\nfunc (s *DoneStore) load() error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tif s.filePath == \"\" {\n\t\treturn nil\n\t}\n\n\tdata, err := os.ReadFile(s.filePath)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\t// Try new format: map[string]string with RFC 3339 values.\n\tvar tsMap map[string]string\n\tif err := json.Unmarshal(data, &tsMap); err == nil {\n\t\tfor id, raw := range tsMap {\n\t\t\tt, err := time.Parse(time.RFC3339, raw)\n\t\t\tif err != nil {\n\t\t\t\tlog.Warn(\n\t\t\t\t\t\"Skipping done entry with invalid timestamp\",\n\t\t\t\t\t\"id\",\n\t\t\t\t\tid,\n\t\t\t\t\t\"raw\",\n\t\t\t\t\traw,\n\t\t\t\t\t\"err\",\n\t\t\t\t\terr,\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.entries[id] = t\n\t\t}\n\t\ts.prune()\n\t\tlog.Debug(\"Loaded done notifications (new format)\", \"count\", len(s.entries))\n\t\treturn nil\n\t}\n\n\t// Fall back to legacy format: []string.\n\tvar idList []string\n\tif err := json.Unmarshal(data, &idList); err != nil {\n\t\treturn err\n\t}\n\tfor _, id := range idList {\n\t\ts.entries[id] = time.Time{}\n\t}\n\ts.prune()\n\tlog.Debug(\"Loaded done notifications (legacy format)\", \"count\", len(s.entries))\n\treturn nil\n}\n\n// prune removes stale entries on load. It deletes entries older than 90 days\n// and zero-time entries (legacy format with no timestamp).\nfunc (s *DoneStore) prune() {\n\tcutoff := time.Now().Add(-90 * 24 * time.Hour)\n\tfor id, t := range s.entries {\n\t\tif t.IsZero() || t.Before(cutoff) {\n\t\t\tdelete(s.entries, id)\n\t\t}\n\t}\n}\n\nfunc (s *DoneStore) save() error {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\tif s.filePath == \"\" {\n\t\treturn nil\n\t}\n\n\ttsMap := make(map[string]string, len(s.entries))\n\tfor id, t := range s.entries {\n\t\ttsMap[id] = t.Format(time.RFC3339)\n\t}\n\n\tdata, err := json.Marshal(tsMap)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdir := filepath.Dir(s.filePath)\n\tif err := os.MkdirAll(dir, 0o755); err != nil {\n\t\treturn err\n\t}\n\n\ttmpFile, err := os.CreateTemp(dir, \".tmp-*\")\n\tif err != nil {\n\t\treturn err\n\t}\n\ttmpPath := tmpFile.Name()\n\tif _, err := tmpFile.Write(data); err != nil {\n\t\ttmpFile.Close()\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\tif err := tmpFile.Close(); err != nil {\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\tif err := os.Rename(tmpPath, s.filePath); err != nil {\n\t\tos.Remove(tmpPath)\n\t\treturn err\n\t}\n\n\tlog.Debug(\"Saved done notifications\", \"count\", len(tsMap))\n\treturn nil\n}\n\n// MarkDone records the notification's current updated_at as the \"done at\"\n// timestamp. If the notification later receives new activity (a newer\n// updated_at), IsDone will return false.\nfunc (s *DoneStore) MarkDone(id string, updatedAt time.Time) {\n\ts.mu.Lock()\n\ts.entries[id] = updatedAt\n\ts.mu.Unlock()\n\tgo s.save()\n}\n\n// IsDone returns true only if the notification has not been updated since it\n// was marked done: !updatedAt.After(doneAt).\nfunc (s *DoneStore) IsDone(id string, updatedAt time.Time) bool {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\tdoneAt, ok := s.entries[id]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn !updatedAt.After(doneAt)\n}\n\n// Remove removes a notification from the done store.\nfunc (s *DoneStore) Remove(id string) {\n\ts.mu.Lock()\n\tdelete(s.entries, id)\n\ts.mu.Unlock()\n\tgo s.save()\n}\n\n// Flush forces an immediate synchronous save.\nfunc (s *DoneStore) Flush() error {\n\treturn s.save()\n}\n\n// Singleton\n\nvar (\n\tdoneStore     *DoneStore\n\tdoneStoreOnce sync.Once\n)\n\n// GetDoneStore returns the singleton done store.\nfunc GetDoneStore() *DoneStore {\n\tdoneStoreOnce.Do(func() {\n\t\tdoneStore = newDoneStore(\"done.json\")\n\t})\n\treturn doneStore\n}\n"
  },
  {
    "path": "internal/data/donestore_test.go",
    "content": "package data\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestDoneStore(t *testing.T) {\n\ttempDir, err := os.MkdirTemp(\"\", \"gh-dash-donestore-test\")\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to create temp dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(tempDir)\n\n\tbaseTime := time.Now().Add(-1 * time.Hour).UTC().Truncate(time.Second)\n\n\tt.Run(\"MarkDone and IsDone with matching timestamp\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"test1.json\"),\n\t\t}\n\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tif !store.IsDone(\"id1\", baseTime) {\n\t\t\tt.Error(\"Should be done when updatedAt equals doneAt\")\n\t\t}\n\t})\n\n\tt.Run(\"IsDone with newer updatedAt returns false\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"test2.json\"),\n\t\t}\n\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tnewerTime := baseTime.Add(1 * time.Hour)\n\t\tif store.IsDone(\"id1\", newerTime) {\n\t\t\tt.Error(\"Should NOT be done when notification has new activity (updatedAt > doneAt)\")\n\t\t}\n\t})\n\n\tt.Run(\"IsDone with older updatedAt returns true\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"test3.json\"),\n\t\t}\n\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tolderTime := baseTime.Add(-1 * time.Hour)\n\t\tif !store.IsDone(\"id1\", olderTime) {\n\t\t\tt.Error(\"Should be done when updatedAt is older than doneAt\")\n\t\t}\n\t})\n\n\tt.Run(\"IsDone for unknown ID returns false\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"test4.json\"),\n\t\t}\n\n\t\tif store.IsDone(\"unknown\", baseTime) {\n\t\t\tt.Error(\"Should NOT be done for an ID not in the store\")\n\t\t}\n\t})\n\n\tt.Run(\"Remove\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"test5.json\"),\n\t\t}\n\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tstore.Remove(\"id1\")\n\t\tif store.IsDone(\"id1\", baseTime) {\n\t\t\tt.Error(\"Should NOT be done after Remove\")\n\t\t}\n\t})\n\n\tt.Run(\"persistence round-trip\", func(t *testing.T) {\n\t\tpersistFile := filepath.Join(tempDir, \"persist.json\")\n\n\t\tstore1 := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: persistFile,\n\t\t}\n\t\tstore1.MarkDone(\"id1\", baseTime)\n\t\tstore1.MarkDone(\"id2\", baseTime.Add(30*time.Minute))\n\t\tif err := store1.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Flush failed: %v\", err)\n\t\t}\n\n\t\tstore2 := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: persistFile,\n\t\t}\n\t\tif err := store2.load(); err != nil {\n\t\t\tt.Fatalf(\"load failed: %v\", err)\n\t\t}\n\n\t\tif !store2.IsDone(\"id1\", baseTime) {\n\t\t\tt.Error(\"Loaded store should have id1 as done\")\n\t\t}\n\t\tif !store2.IsDone(\"id2\", baseTime.Add(30*time.Minute)) {\n\t\t\tt.Error(\"Loaded store should have id2 as done\")\n\t\t}\n\t\t// New activity should still resurface\n\t\tif store2.IsDone(\"id1\", baseTime.Add(1*time.Hour)) {\n\t\t\tt.Error(\"Loaded store should detect new activity for id1\")\n\t\t}\n\t})\n\n\tt.Run(\"backward compatibility: load legacy format\", func(t *testing.T) {\n\t\tlegacyFile := filepath.Join(tempDir, \"legacy.json\")\n\t\tlegacyData, _ := json.Marshal([]string{\"id1\", \"id2\", \"id3\"})\n\t\tif err := os.WriteFile(legacyFile, legacyData, 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to write legacy file: %v\", err)\n\t\t}\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: legacyFile,\n\t\t}\n\t\tif err := store.load(); err != nil {\n\t\t\tt.Fatalf(\"load failed on legacy format: %v\", err)\n\t\t}\n\n\t\t// Legacy entries get zero time. Any real updatedAt is after zero,\n\t\t// so all legacy entries resurface. This is a one-time cost on\n\t\t// upgrade; once re-marked as done they get proper timestamps.\n\t\tpastTime := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)\n\t\tif store.IsDone(\"id1\", pastTime) {\n\t\t\tt.Error(\"Legacy ID should resurface (zero time is before any real updatedAt)\")\n\t\t}\n\t\tif store.IsDone(\"id2\", pastTime) {\n\t\t\tt.Error(\"Legacy ID should resurface\")\n\t\t}\n\t\tif store.IsDone(\"id3\", pastTime) {\n\t\t\tt.Error(\"Legacy ID should resurface\")\n\t\t}\n\n\t\t// Unknown IDs still return false\n\t\tif store.IsDone(\"id4\", pastTime) {\n\t\t\tt.Error(\"Unknown ID should not be done\")\n\t\t}\n\t})\n\n\tt.Run(\"load from non-existent file\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"nonexistent.json\"),\n\t\t}\n\t\tif err := store.load(); err != nil {\n\t\t\tt.Errorf(\"load from non-existent file should not error, got: %v\", err)\n\t\t}\n\t})\n\n\tt.Run(\"save then load preserves RFC3339 format\", func(t *testing.T) {\n\t\tfile := filepath.Join(tempDir, \"format.json\")\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: file,\n\t\t}\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tif err := store.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Flush failed: %v\", err)\n\t\t}\n\n\t\traw, err := os.ReadFile(file)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"ReadFile failed: %v\", err)\n\t\t}\n\n\t\tvar tsMap map[string]string\n\t\tif err := json.Unmarshal(raw, &tsMap); err != nil {\n\t\t\tt.Fatalf(\"Should be a JSON object: %v\", err)\n\t\t}\n\t\tif _, ok := tsMap[\"id1\"]; !ok {\n\t\t\tt.Error(\"Should have id1 key\")\n\t\t}\n\t\tif _, err := time.Parse(time.RFC3339, tsMap[\"id1\"]); err != nil {\n\t\t\tt.Errorf(\"Timestamp should be RFC3339: %v\", err)\n\t\t}\n\t})\n\n\tt.Run(\"legacy entries pruned and saved as new format\", func(t *testing.T) {\n\t\tlegacyFile := filepath.Join(tempDir, \"legacy-upgrade.json\")\n\t\tlegacyData, _ := json.Marshal([]string{\"id1\", \"id2\"})\n\t\tif err := os.WriteFile(legacyFile, legacyData, 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to write legacy file: %v\", err)\n\t\t}\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: legacyFile,\n\t\t}\n\t\tif err := store.load(); err != nil {\n\t\t\tt.Fatalf(\"load failed: %v\", err)\n\t\t}\n\t\tif err := store.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Flush failed: %v\", err)\n\t\t}\n\n\t\t// Re-read file: should now be a JSON object (not an array),\n\t\t// and empty because zero-time legacy entries are pruned on load.\n\t\traw, err := os.ReadFile(legacyFile)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"ReadFile failed: %v\", err)\n\t\t}\n\t\tvar tsMap map[string]string\n\t\tif err := json.Unmarshal(raw, &tsMap); err != nil {\n\t\t\tt.Fatalf(\"Saved legacy file should be new format (JSON object): %v\", err)\n\t\t}\n\t\tif len(tsMap) != 0 {\n\t\t\tt.Errorf(\"Expected 0 entries (legacy pruned), got %d\", len(tsMap))\n\t\t}\n\t})\n\n\tt.Run(\"re-mark legacy entry as done with real timestamp\", func(t *testing.T) {\n\t\tlegacyFile := filepath.Join(tempDir, \"legacy-remark.json\")\n\t\tlegacyData, _ := json.Marshal([]string{\"id1\"})\n\t\tif err := os.WriteFile(legacyFile, legacyData, 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to write legacy file: %v\", err)\n\t\t}\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: legacyFile,\n\t\t}\n\t\tif err := store.load(); err != nil {\n\t\t\tt.Fatalf(\"load failed: %v\", err)\n\t\t}\n\n\t\t// Legacy entry resurfaces (zero time)\n\t\tif store.IsDone(\"id1\", baseTime) {\n\t\t\tt.Error(\"Legacy entry should resurface initially\")\n\t\t}\n\n\t\t// User re-marks it as done with a real timestamp\n\t\tstore.MarkDone(\"id1\", baseTime)\n\t\tif !store.IsDone(\"id1\", baseTime) {\n\t\t\tt.Error(\"Should be done after re-marking with real timestamp\")\n\t\t}\n\t\t// New activity after re-mark should still resurface\n\t\tif store.IsDone(\"id1\", baseTime.Add(1*time.Hour)) {\n\t\t\tt.Error(\"Should resurface on new activity after re-mark\")\n\t\t}\n\t})\n\n\tt.Run(\"MarkDone overwrites timestamp on same ID\", func(t *testing.T) {\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: filepath.Join(tempDir, \"overwrite.json\"),\n\t\t}\n\n\t\tt1 := baseTime\n\t\tt2 := baseTime.Add(2 * time.Hour)\n\n\t\tstore.MarkDone(\"id1\", t1)\n\t\t// Activity at t1+1h would resurface\n\t\tif store.IsDone(\"id1\", t1.Add(1*time.Hour)) {\n\t\t\tt.Error(\"Should not be done for activity after first mark\")\n\t\t}\n\n\t\t// Re-mark done at t2 (user saw the new activity and dismissed it)\n\t\tstore.MarkDone(\"id1\", t2)\n\t\t// Now activity at t1+1h is before t2, so it should be done\n\t\tif !store.IsDone(\"id1\", t1.Add(1*time.Hour)) {\n\t\t\tt.Error(\"Should be done after re-marking at later timestamp\")\n\t\t}\n\t\t// Activity after t2 still resurfaces\n\t\tif store.IsDone(\"id1\", t2.Add(1*time.Minute)) {\n\t\t\tt.Error(\"Should resurface for activity after second mark\")\n\t\t}\n\t})\n\n\tt.Run(\"load from empty file\", func(t *testing.T) {\n\t\temptyFile := filepath.Join(tempDir, \"empty.json\")\n\t\tif err := os.WriteFile(emptyFile, []byte(\"\"), 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to create empty file: %v\", err)\n\t\t}\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: emptyFile,\n\t\t}\n\t\terr := store.load()\n\t\tif err == nil {\n\t\t\tt.Error(\"load from empty file should return an error (invalid JSON)\")\n\t\t}\n\t})\n\n\tt.Run(\"prune removes entries older than 90 days\", func(t *testing.T) {\n\t\tpruneFile := filepath.Join(tempDir, \"prune.json\")\n\t\tnow := time.Now().UTC().Truncate(time.Second)\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: pruneFile,\n\t\t}\n\n\t\t// Entries at various ages\n\t\tstore.entries[\"fresh\"] = now.Add(-1 * 24 * time.Hour)     // 1 day old\n\t\tstore.entries[\"border\"] = now.Add(-89 * 24 * time.Hour)   // 89 days old\n\t\tstore.entries[\"expired\"] = now.Add(-91 * 24 * time.Hour)  // 91 days old\n\t\tstore.entries[\"ancient\"] = now.Add(-180 * 24 * time.Hour) // 180 days old\n\t\tstore.entries[\"legacy\"] = time.Time{}                     // zero time (legacy)\n\n\t\tif err := store.Flush(); err != nil {\n\t\t\tt.Fatalf(\"Flush failed: %v\", err)\n\t\t}\n\n\t\t// Reload to trigger pruning\n\t\tstore2 := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: pruneFile,\n\t\t}\n\t\tif err := store2.load(); err != nil {\n\t\t\tt.Fatalf(\"load failed: %v\", err)\n\t\t}\n\n\t\t// Fresh and border entries should survive\n\t\tif _, ok := store2.entries[\"fresh\"]; !ok {\n\t\t\tt.Error(\"1-day-old entry should be kept\")\n\t\t}\n\t\tif _, ok := store2.entries[\"border\"]; !ok {\n\t\t\tt.Error(\"89-day-old entry should be kept\")\n\t\t}\n\n\t\t// Expired entries should be pruned\n\t\tif _, ok := store2.entries[\"expired\"]; ok {\n\t\t\tt.Error(\"91-day-old entry should be pruned\")\n\t\t}\n\t\tif _, ok := store2.entries[\"ancient\"]; ok {\n\t\t\tt.Error(\"180-day-old entry should be pruned\")\n\t\t}\n\n\t\t// Legacy (zero-time) entries should be pruned\n\t\tif _, ok := store2.entries[\"legacy\"]; ok {\n\t\t\tt.Error(\"zero-time (legacy) entry should be pruned\")\n\t\t}\n\t})\n\n\tt.Run(\"load from corrupted JSON\", func(t *testing.T) {\n\t\tcorruptedFile := filepath.Join(tempDir, \"corrupted.json\")\n\t\tif err := os.WriteFile(corruptedFile, []byte(\"{invalid json\"), 0o644); err != nil {\n\t\t\tt.Fatalf(\"Failed to create corrupted file: %v\", err)\n\t\t}\n\n\t\tstore := &DoneStore{\n\t\t\tentries:  make(map[string]time.Time),\n\t\t\tfilePath: corruptedFile,\n\t\t}\n\t\terr := store.load()\n\t\tif err == nil {\n\t\t\tt.Error(\"load from corrupted JSON should return an error\")\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/data/donestore_testing.go",
    "content": "package data\n\nimport (\n\t\"time\"\n)\n\n// NewDoneStoreForTesting creates a DoneStore backed by the given file path.\nfunc NewDoneStoreForTesting(filePath string) *DoneStore {\n\treturn &DoneStore{\n\t\tentries:  make(map[string]time.Time),\n\t\tfilePath: filePath,\n\t}\n}\n\n// OverrideDoneStoreForTesting replaces the singleton DoneStore with the given\n// store. It returns a function that restores the original store.\nfunc OverrideDoneStoreForTesting(store *DoneStore) func() {\n\t// Ensure the singleton is initialized so sync.Once has fired.\n\tGetDoneStore()\n\told := doneStore\n\tdoneStore = store\n\treturn func() { doneStore = old }\n}\n"
  },
  {
    "path": "internal/data/issueapi.go",
    "content": "package data\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"charm.land/log/v2\"\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n\t\"github.com/shurcooL/githubv4\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\ntype IssueData struct {\n\tNumber int\n\tTitle  string\n\tBody   string\n\tState  string\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tAuthorAssociation string\n\tUpdatedAt         time.Time\n\tCreatedAt         time.Time\n\tUrl               string\n\tRepository        Repository\n\tAssignees         Assignees      `graphql:\"assignees(first: 3)\"`\n\tComments          IssueComments  `graphql:\"comments(last: 15)\"`\n\tReactions         IssueReactions `graphql:\"reactions(first: 1)\"`\n\tLabels            IssueLabels    `graphql:\"labels(first: 20)\"`\n}\n\ntype IssueComments struct {\n\tNodes      []IssueComment\n\tTotalCount int\n}\n\ntype IssueComment struct {\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tBody      string\n\tUpdatedAt time.Time\n}\n\ntype IssueReactions struct {\n\tTotalCount int\n}\n\ntype Label struct {\n\tColor string\n\tName  string\n}\n\ntype IssueLabels struct {\n\tNodes []Label\n}\n\nfunc (data IssueData) GetAuthor(theme theme.Theme, showAuthorIcons bool) string {\n\tauthor := data.Author.Login\n\tif showAuthorIcons {\n\t\tauthor += fmt.Sprintf(\" %s\", GetAuthorRoleIcon(data.AuthorAssociation, theme))\n\t}\n\treturn author\n}\n\nfunc (data IssueData) GetTitle() string {\n\treturn data.Title\n}\n\nfunc (data IssueData) GetRepoNameWithOwner() string {\n\treturn data.Repository.NameWithOwner\n}\n\nfunc (data IssueData) GetNumber() int {\n\treturn data.Number\n}\n\nfunc (data IssueData) GetUrl() string {\n\treturn data.Url\n}\n\nfunc (data IssueData) GetUpdatedAt() time.Time {\n\treturn data.UpdatedAt\n}\n\nfunc (data IssueData) GetCreatedAt() time.Time {\n\treturn data.CreatedAt\n}\n\nfunc makeIssuesQuery(query string) string {\n\treturn fmt.Sprintf(\"is:issue archived:false %s sort:updated\", query)\n}\n\nfunc FetchIssues(query string, limit int, pageInfo *PageInfo) (IssuesResponse, error) {\n\tvar err error\n\tif client == nil {\n\t\tclient, err = gh.DefaultGraphQLClient()\n\t}\n\n\tif err != nil {\n\t\treturn IssuesResponse{}, err\n\t}\n\n\tvar queryResult struct {\n\t\tSearch struct {\n\t\t\tNodes []struct {\n\t\t\t\tIssue IssueData `graphql:\"... on Issue\"`\n\t\t\t}\n\t\t\tIssueCount int\n\t\t\tPageInfo   PageInfo\n\t\t} `graphql:\"search(type: ISSUE, first: $limit, after: $endCursor, query: $query)\"`\n\t}\n\tvar endCursor *string\n\tif pageInfo != nil {\n\t\tendCursor = &pageInfo.EndCursor\n\t}\n\tvariables := map[string]any{\n\t\t\"query\":     graphql.String(makeIssuesQuery(query)),\n\t\t\"limit\":     graphql.Int(limit),\n\t\t\"endCursor\": (*graphql.String)(endCursor),\n\t}\n\tlog.Debug(\"Fetching issues\", \"query\", query, \"limit\", limit, \"endCursor\", endCursor)\n\terr = client.Query(\"SearchIssues\", &queryResult, variables)\n\tif err != nil {\n\t\treturn IssuesResponse{}, err\n\t}\n\tlog.Info(\"Successfully fetched issues\", \"query\", query, \"count\", queryResult.Search.IssueCount)\n\n\tissues := make([]IssueData, 0, len(queryResult.Search.Nodes))\n\tfor _, node := range queryResult.Search.Nodes {\n\t\tissues = append(issues, node.Issue)\n\t}\n\n\treturn IssuesResponse{\n\t\tIssues:     issues,\n\t\tTotalCount: queryResult.Search.IssueCount,\n\t\tPageInfo:   queryResult.Search.PageInfo,\n\t}, nil\n}\n\ntype IssuesResponse struct {\n\tIssues     []IssueData\n\tTotalCount int\n\tPageInfo   PageInfo\n}\n\n// FetchIssue fetches a single issue by its GitHub URL\nfunc FetchIssue(issueUrl string) (IssueData, error) {\n\tvar err error\n\tif client == nil {\n\t\tclient, err = gh.DefaultGraphQLClient()\n\t\tif err != nil {\n\t\t\treturn IssueData{}, err\n\t\t}\n\t}\n\n\tvar queryResult struct {\n\t\tResource struct {\n\t\t\tIssue IssueData `graphql:\"... on Issue\"`\n\t\t} `graphql:\"resource(url: $url)\"`\n\t}\n\tparsedUrl, err := url.Parse(issueUrl)\n\tif err != nil {\n\t\treturn IssueData{}, err\n\t}\n\tvariables := map[string]any{\n\t\t\"url\": githubv4.URI{URL: parsedUrl},\n\t}\n\tlog.Debug(\"Fetching Issue\", \"url\", issueUrl)\n\terr = client.Query(\"FetchIssue\", &queryResult, variables)\n\tif err != nil {\n\t\treturn IssueData{}, err\n\t}\n\tlog.Info(\"Successfully fetched Issue\", \"url\", issueUrl)\n\n\treturn queryResult.Resource.Issue, nil\n}\n"
  },
  {
    "path": "internal/data/labelapi.go",
    "content": "package data\n\nimport (\n\t\"encoding/json\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\trepoLabelCache = make(map[string][]Label)\n\tlabelCacheMu   sync.RWMutex\n\t// execCommand is injectable for testing; defaults to exec.Command\n\texecCommand = exec.Command\n)\n\nfunc GetCachedRepoLabels(repoNameWithOwner string) ([]Label, bool) {\n\tlabelCacheMu.RLock()\n\tdefer labelCacheMu.RUnlock()\n\tlabels, ok := repoLabelCache[repoNameWithOwner]\n\treturn labels, ok\n}\n\nfunc FetchRepoLabels(repoNameWithOwner string) ([]Label, error) {\n\t// Check cache first\n\tif cachedLabels, ok := GetCachedRepoLabels(repoNameWithOwner); ok {\n\t\treturn cachedLabels, nil\n\t}\n\n\tcmd := execCommand(\n\t\t\"gh\",\n\t\t\"label\",\n\t\t\"list\",\n\t\t\"-R\",\n\t\trepoNameWithOwner,\n\t\t\"--json\",\n\t\t\"name,color\",\n\t\t\"--limit\",\n\t\t\"300\",\n\t)\n\toutput, err := cmd.Output()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar labels []Label\n\tif err := json.Unmarshal(output, &labels); err != nil {\n\t\treturn nil, err\n\t}\n\n\tfilteredLabels := make([]Label, 0, len(labels))\n\tfor _, label := range labels {\n\t\tif strings.TrimSpace(label.Name) != \"\" {\n\t\t\tfilteredLabels = append(filteredLabels, label)\n\t\t}\n\t}\n\n\tlabelCacheMu.Lock()\n\tdefer labelCacheMu.Unlock()\n\n\tif labels, ok := repoLabelCache[repoNameWithOwner]; ok {\n\t\treturn labels, nil\n\t}\n\n\trepoLabelCache[repoNameWithOwner] = filteredLabels\n\treturn filteredLabels, nil\n}\n\nfunc ClearLabelCache() {\n\tlabelCacheMu.Lock()\n\tdefer labelCacheMu.Unlock()\n\trepoLabelCache = make(map[string][]Label)\n}\n\nfunc ClearRepoLabelCache(repoNameWithOwner string) {\n\tlabelCacheMu.Lock()\n\tdefer labelCacheMu.Unlock()\n\tdelete(repoLabelCache, repoNameWithOwner)\n}\n\nfunc GetLabelNames(labels []Label) []string {\n\tnames := make([]string, len(labels))\n\tfor i, label := range labels {\n\t\tnames[i] = label.Name\n\t}\n\treturn names\n}\n"
  },
  {
    "path": "internal/data/notificationapi.go",
    "content": "package data\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/log/v2\"\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n)\n\n// Notification subject types from GitHub API\nconst (\n\tSubjectTypePullRequest = \"PullRequest\"\n\tSubjectTypeIssue       = \"Issue\"\n\tSubjectTypeDiscussion  = \"Discussion\"\n\tSubjectTypeRelease     = \"Release\"\n\tSubjectTypeCommit      = \"Commit\"\n\tSubjectTypeCheckSuite  = \"CheckSuite\"\n)\n\n// Notification reasons from GitHub API\nconst (\n\tReasonSubscribed      = \"subscribed\"\n\tReasonReviewRequested = \"review_requested\"\n\tReasonMention         = \"mention\"\n\tReasonAuthor          = \"author\"\n\tReasonComment         = \"comment\"\n\tReasonAssign          = \"assign\"\n\tReasonStateChange     = \"state_change\"\n\tReasonCIActivity      = \"ci_activity\"\n\tReasonTeamMention     = \"team_mention\"\n\tReasonSecurityAlert   = \"security_alert\"\n)\n\nvar restClient *gh.RESTClient\n\ntype NotificationSubject struct {\n\tTitle            string `json:\"title\"`\n\tUrl              string `json:\"url\"`\n\tLatestCommentUrl string `json:\"latest_comment_url\"`\n\tType             string `json:\"type\"` // PullRequest, Issue, Discussion, Release, etc.\n}\n\ntype NotificationRepository struct {\n\tId       int    `json:\"id\"`\n\tName     string `json:\"name\"`\n\tFullName string `json:\"full_name\"`\n\tPrivate  bool   `json:\"private\"`\n\tOwner    struct {\n\t\tLogin string `json:\"login\"`\n\t} `json:\"owner\"`\n\tHtmlUrl string `json:\"html_url\"`\n}\n\ntype NotificationData struct {\n\tId           string                 `json:\"id\"`\n\tUnread       bool                   `json:\"unread\"`\n\tReason       string                 `json:\"reason\"` // subscribed, review_requested, mention, etc.\n\tUpdatedAt    time.Time              `json:\"updated_at\"`\n\tLastReadAt   *time.Time             `json:\"last_read_at\"`\n\tSubject      NotificationSubject    `json:\"subject\"`\n\tRepository   NotificationRepository `json:\"repository\"`\n\tUrl          string                 `json:\"url\"`\n\tSubscription string                 `json:\"subscription_url\"`\n}\n\nfunc (n NotificationData) GetTitle() string {\n\treturn n.Subject.Title\n}\n\nfunc (n NotificationData) GetRepoNameWithOwner() string {\n\treturn n.Repository.FullName\n}\n\nfunc (n NotificationData) GetNumber() int {\n\t// Notifications don't have a number, return 0\n\treturn 0\n}\n\nfunc (n NotificationData) GetUrl() string {\n\tif n.Repository.HtmlUrl != \"\" {\n\t\treturn strings.TrimRight(n.Repository.HtmlUrl, \"/\")\n\t}\n\treturn fmt.Sprintf(\"https://github.com/%s\", n.Repository.FullName)\n}\n\nfunc (n NotificationData) GetUpdatedAt() time.Time {\n\treturn n.UpdatedAt\n}\n\nfunc (n NotificationData) GetCreatedAt() time.Time {\n\t// Notifications don't have a created_at, use updated_at\n\treturn n.UpdatedAt\n}\n\ntype NotificationsResponse struct {\n\tNotifications []NotificationData\n\tTotalCount    int\n\tPageInfo      PageInfo\n}\n\nfunc getRESTClient() (*gh.RESTClient, error) {\n\tif restClient != nil {\n\t\treturn restClient, nil\n\t}\n\tvar err error\n\trestClient, err = gh.DefaultRESTClient()\n\treturn restClient, err\n}\n\n// NotificationReadState represents the read state filter for notifications\ntype NotificationReadState string\n\nconst (\n\tNotificationStateUnread NotificationReadState = \"unread\" // Only unread (default)\n\tNotificationStateRead   NotificationReadState = \"read\"   // Only read\n\tNotificationStateAll    NotificationReadState = \"all\"    // Both read and unread\n)\n\nfunc FetchNotifications(\n\tlimit int,\n\trepoFilters []string,\n\treadState NotificationReadState,\n\tpageInfo *PageInfo,\n) (NotificationsResponse, error) {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn NotificationsResponse{}, err\n\t}\n\n\tvar allNotifications []NotificationData\n\n\t// Build query params\n\t// all=true returns both read and unread notifications\n\tincludeAll := readState == NotificationStateRead || readState == NotificationStateAll\n\tallParam := \"\"\n\tif includeAll {\n\t\tallParam = \"&all=true\"\n\t}\n\n\t// Determine page number from PageInfo (EndCursor stores the current page as string)\n\tpage := 1\n\tif pageInfo != nil && pageInfo.EndCursor != \"\" {\n\t\tfmt.Sscanf(pageInfo.EndCursor, \"%d\", &page)\n\t}\n\n\tif len(repoFilters) == 0 {\n\t\t// No repo filter, fetch all notifications\n\t\tpath := fmt.Sprintf(\"notifications?per_page=%d&page=%d%s\", limit, page, allParam)\n\t\tlog.Debug(\"Fetching notifications\", \"limit\", limit, \"page\", page, \"readState\", readState)\n\t\terr = client.Get(path, &allNotifications)\n\t\tif err != nil {\n\t\t\treturn NotificationsResponse{}, err\n\t\t}\n\t} else {\n\t\t// Fetch notifications for each repo and combine\n\t\tfor _, repo := range repoFilters {\n\t\t\tvar repoNotifications []NotificationData\n\t\t\tpath := fmt.Sprintf(\n\t\t\t\t\"repos/%s/notifications?per_page=%d&page=%d%s\",\n\t\t\t\trepo,\n\t\t\t\tlimit,\n\t\t\t\tpage,\n\t\t\t\tallParam,\n\t\t\t)\n\t\t\tlog.Debug(\n\t\t\t\t\"Fetching notifications for repo\",\n\t\t\t\t\"repo\",\n\t\t\t\trepo,\n\t\t\t\t\"limit\",\n\t\t\t\tlimit,\n\t\t\t\t\"page\",\n\t\t\t\tpage,\n\t\t\t\t\"readState\",\n\t\t\t\treadState,\n\t\t\t)\n\t\t\terr = client.Get(path, &repoNotifications)\n\t\t\tif err != nil {\n\t\t\t\tlog.Warn(\"Failed to fetch notifications for repo\", \"repo\", repo, \"err\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tallNotifications = append(allNotifications, repoNotifications...)\n\t\t}\n\t}\n\n\t// Determine if there's a next page BEFORE filtering (based on raw API response count).\n\t// If the API returned a full page, there are likely more notifications on the server.\n\t// We must check this before filtering because the caller needs accurate pagination info\n\t// to fetch additional pages when many notifications are filtered out locally.\n\trawCount := len(allNotifications)\n\thasNextPage := rawCount >= limit\n\tnextPage := fmt.Sprintf(\"%d\", page+1)\n\n\t// Filter by read state if needed\n\tswitch readState {\n\tcase NotificationStateRead:\n\t\t// Keep only read notifications\n\t\tfiltered := make([]NotificationData, 0)\n\t\tfor _, n := range allNotifications {\n\t\t\tif !n.Unread {\n\t\t\t\tfiltered = append(filtered, n)\n\t\t\t}\n\t\t}\n\t\tallNotifications = filtered\n\tcase NotificationStateUnread:\n\t\t// Keep only unread notifications (API default, but filter just in case)\n\t\tfiltered := make([]NotificationData, 0)\n\t\tfor _, n := range allNotifications {\n\t\t\tif n.Unread {\n\t\t\t\tfiltered = append(filtered, n)\n\t\t\t}\n\t\t}\n\t\tallNotifications = filtered\n\tcase NotificationStateAll:\n\t\t// Keep all, no filtering needed\n\t}\n\n\tlog.Info(\n\t\t\"Successfully fetched notifications\",\n\t\t\"rawCount\",\n\t\trawCount,\n\t\t\"filteredCount\",\n\t\tlen(allNotifications),\n\t\t\"page\",\n\t\tpage,\n\t\t\"hasNextPage\",\n\t\thasNextPage,\n\t\t\"readState\",\n\t\treadState,\n\t)\n\n\treturn NotificationsResponse{\n\t\tNotifications: allNotifications,\n\t\tTotalCount:    len(allNotifications),\n\t\tPageInfo: PageInfo{\n\t\t\tHasNextPage: hasNextPage,\n\t\t\tEndCursor:   nextPage,\n\t\t},\n\t}, nil\n}\n\n// FetchNotificationByThreadId fetches a single notification by its thread ID.\n// This is useful for fetching bookmarked or session-marked-read notifications\n// that may not appear in the regular notifications list.\nfunc FetchNotificationByThreadId(threadId string) (*NotificationData, error) {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpath := fmt.Sprintf(\"notifications/threads/%s\", threadId)\n\tlog.Debug(\"Fetching notification by thread ID\", \"threadId\", threadId)\n\n\tvar notification NotificationData\n\terr = client.Get(path, &notification)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &notification, nil\n}\n\nfunc MarkNotificationDone(threadId string) error {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpath := fmt.Sprintf(\"notifications/threads/%s\", threadId)\n\tlog.Debug(\"Marking notification as done\", \"threadId\", threadId)\n\n\t// DELETE marks as done\n\terr = client.Delete(path, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tlog.Info(\"Successfully marked notification as done\", \"threadId\", threadId)\n\treturn nil\n}\n\nfunc MarkNotificationRead(threadId string) error {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpath := fmt.Sprintf(\"notifications/threads/%s\", threadId)\n\tlog.Debug(\"Marking notification as read\", \"threadId\", threadId)\n\n\t// PATCH marks as read - returns 205 Reset Content with no body\n\t// The REST client may return an error trying to parse the empty response\n\terr = client.Patch(path, nil, nil)\n\tif err != nil && err.Error() != \"unexpected end of JSON input\" {\n\t\treturn err\n\t}\n\tlog.Info(\"Successfully marked notification as read\", \"threadId\", threadId)\n\treturn nil\n}\n\nfunc UnsubscribeFromThread(threadId string) error {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"Unsubscribing from notification thread\", \"threadId\", threadId)\n\n\t// DELETE /notifications/threads/{thread_id}/subscription\n\t// Mutes all future notifications for a conversation until you comment on the thread or get an @mention\n\tpath := fmt.Sprintf(\"notifications/threads/%s/subscription\", threadId)\n\terr = client.Delete(path, nil)\n\tif err != nil && err.Error() != \"unexpected end of JSON input\" {\n\t\treturn err\n\t}\n\tlog.Info(\"Successfully unsubscribed from thread\", \"threadId\", threadId)\n\treturn nil\n}\n\nfunc MarkAllNotificationsRead() error {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"Marking all notifications as read\")\n\n\t// PUT /notifications marks all as read - returns 205 Reset Content with no body\n\t// The REST client may return an error trying to parse the empty response\n\terr = client.Put(\"notifications\", nil, nil)\n\tif err != nil && err.Error() != \"unexpected end of JSON input\" {\n\t\treturn err\n\t}\n\tlog.Info(\"Successfully marked all notifications as read\")\n\treturn nil\n}\n\n// CommentResponse represents a GitHub comment with author info\ntype CommentResponse struct {\n\tUser struct {\n\t\tLogin string `json:\"login\"`\n\t} `json:\"user\"`\n}\n\n// WorkflowRun represents a GitHub Actions workflow run\ntype WorkflowRun struct {\n\tId         int64     `json:\"id\"`\n\tName       string    `json:\"name\"`\n\tHtmlUrl    string    `json:\"html_url\"`\n\tHeadBranch string    `json:\"head_branch\"`\n\tUpdatedAt  time.Time `json:\"updated_at\"`\n\tConclusion string    `json:\"conclusion\"` // success, failure, cancelled, etc.\n}\n\n// WorkflowRunsResponse represents the response from the workflow runs API\ntype WorkflowRunsResponse struct {\n\tTotalCount   int           `json:\"total_count\"`\n\tWorkflowRuns []WorkflowRun `json:\"workflow_runs\"`\n}\n\n// FetchCommentAuthor fetches the author of a comment from its API URL\n// apiUrl is like: https://api.github.com/repos/owner/repo/issues/comments/123456\nfunc FetchCommentAuthor(apiUrl string) (string, error) {\n\tif apiUrl == \"\" {\n\t\treturn \"\", nil\n\t}\n\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Extract the path from the full URL\n\tconst apiPrefix = \"https://api.github.com/\"\n\tpath := apiUrl\n\tif len(apiUrl) > len(apiPrefix) && apiUrl[:len(apiPrefix)] == apiPrefix {\n\t\tpath = apiUrl[len(apiPrefix):]\n\t}\n\n\tvar response CommentResponse\n\terr = client.Get(path, &response)\n\tif err != nil {\n\t\tlog.Debug(\"Failed to fetch comment author\", \"url\", apiUrl, \"err\", err)\n\t\treturn \"\", err\n\t}\n\n\treturn response.User.Login, nil\n}\n\n// FindBestWorkflowRunMatch finds the workflow run closest in time to the notification.\n// Returns nil if no suitable match is found within the time window.\n// Exported for testing.\nfunc FindBestWorkflowRunMatch(runs []WorkflowRun, notificationUpdatedAt time.Time) *WorkflowRun {\n\tif len(runs) == 0 {\n\t\treturn nil\n\t}\n\n\tvar bestMatch *WorkflowRun\n\tbestDiff := time.Hour * 24 * 365 // Start with a large value\n\n\tfor i := range runs {\n\t\trun := &runs[i]\n\t\tdiff := notificationUpdatedAt.Sub(run.UpdatedAt)\n\t\tif diff < 0 {\n\t\t\tdiff = -diff\n\t\t}\n\n\t\t// Prefer runs that are close in time (within a reasonable window)\n\t\tif diff < bestDiff && diff < time.Hour {\n\t\t\tbestDiff = diff\n\t\t\tbestMatch = run\n\t\t}\n\t}\n\n\t// If no close match, just return the most recent run\n\tif bestMatch == nil {\n\t\tbestMatch = &runs[0]\n\t}\n\n\treturn bestMatch\n}\n\n// FetchRecentWorkflowRun fetches recent workflow runs for a repo and finds the best match\n// based on the notification's updated_at timestamp. Returns the HTML URL of the matching run.\n// The title parameter is the notification subject title (e.g., \"CI / build (push)\")\n// which may help identify the correct workflow run.\nfunc FetchRecentWorkflowRun(\n\trepo string,\n\tnotificationUpdatedAt time.Time,\n\ttitle string,\n) (string, error) {\n\tclient, err := getRESTClient()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Fetch recent workflow runs (limit to 20 for performance)\n\tpath := fmt.Sprintf(\"repos/%s/actions/runs?per_page=20\", repo)\n\tlog.Debug(\"Fetching workflow runs\", \"repo\", repo, \"path\", path)\n\n\tvar response WorkflowRunsResponse\n\terr = client.Get(path, &response)\n\tif err != nil {\n\t\tlog.Debug(\"Failed to fetch workflow runs\", \"repo\", repo, \"err\", err)\n\t\treturn \"\", err\n\t}\n\n\tif len(response.WorkflowRuns) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tbestMatch := FindBestWorkflowRunMatch(response.WorkflowRuns, notificationUpdatedAt)\n\tif bestMatch != nil {\n\t\tlog.Debug(\n\t\t\t\"Found matching workflow run\",\n\t\t\t\"id\",\n\t\t\tbestMatch.Id,\n\t\t\t\"name\",\n\t\t\tbestMatch.Name,\n\t\t\t\"url\",\n\t\t\tbestMatch.HtmlUrl,\n\t\t)\n\t\treturn bestMatch.HtmlUrl, nil\n\t}\n\n\treturn \"\", nil\n}\n"
  },
  {
    "path": "internal/data/notificationapi_test.go",
    "content": "package data\n\nimport (\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestFindBestWorkflowRunMatch(t *testing.T) {\n\tbaseTime := time.Date(2024, 1, 15, 12, 0, 0, 0, time.UTC)\n\n\ttests := []struct {\n\t\tname                  string\n\t\truns                  []WorkflowRun\n\t\tnotificationUpdatedAt time.Time\n\t\texpectedId            int64\n\t\texpectedNil           bool\n\t}{\n\t\t{\n\t\t\tname:                  \"empty runs returns nil\",\n\t\t\truns:                  []WorkflowRun{},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedNil:           true,\n\t\t},\n\t\t{\n\t\t\tname: \"single run within time window is selected\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-5 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            1,\n\t\t},\n\t\t{\n\t\t\tname: \"closest run within time window is selected\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-30 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-5 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        3,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/3\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-15 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            2, // 5 minutes is closest\n\t\t},\n\t\t{\n\t\t\tname: \"run slightly after notification time is selected\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(2 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-10 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            1, // 2 minutes after is closer than 10 minutes before\n\t\t},\n\t\t{\n\t\t\tname: \"no runs within time window falls back to first run\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-2 * time.Hour),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-3 * time.Hour),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            1, // Falls back to first (most recent) run\n\t\t},\n\t\t{\n\t\t\tname: \"exact time match is selected\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-10 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        3,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/3\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-5 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            2, // Exact match\n\t\t},\n\t\t{\n\t\t\tname: \"run at edge of time window (59 minutes) is selected\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-59 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(-61 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            1, // 59 minutes is within the 1 hour window\n\t\t},\n\t\t{\n\t\t\tname: \"notification time before all runs still finds closest\",\n\t\t\truns: []WorkflowRun{\n\t\t\t\t{\n\t\t\t\t\tId:        1,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/1\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(30 * time.Minute),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tId:        2,\n\t\t\t\t\tName:      \"CI\",\n\t\t\t\t\tHtmlUrl:   \"https://github.com/owner/repo/actions/runs/2\",\n\t\t\t\t\tUpdatedAt: baseTime.Add(10 * time.Minute),\n\t\t\t\t},\n\t\t\t},\n\t\t\tnotificationUpdatedAt: baseTime,\n\t\t\texpectedId:            2, // 10 minutes after is closer\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := FindBestWorkflowRunMatch(tt.runs, tt.notificationUpdatedAt)\n\n\t\t\tif tt.expectedNil {\n\t\t\t\tif result != nil {\n\t\t\t\t\tt.Errorf(\"FindBestWorkflowRunMatch() = %v, want nil\", result)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif result == nil {\n\t\t\t\tt.Errorf(\"FindBestWorkflowRunMatch() = nil, want run with id %d\", tt.expectedId)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif result.Id != tt.expectedId {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"FindBestWorkflowRunMatch() returned run id %d, want %d\",\n\t\t\t\t\tresult.Id,\n\t\t\t\t\ttt.expectedId,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNotificationDataGetUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     NotificationData\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"uses HtmlUrl from repository\",\n\t\t\tdata: NotificationData{\n\t\t\t\tRepository: NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"uses GHE host from HtmlUrl\",\n\t\t\tdata: NotificationData{\n\t\t\t\tRepository: NotificationRepository{\n\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"trims trailing slash from HtmlUrl\",\n\t\t\tdata: NotificationData{\n\t\t\t\tRepository: NotificationRepository{\n\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"falls back to github.com when HtmlUrl is empty\",\n\t\t\tdata: NotificationData{\n\t\t\t\tRepository: NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\tHtmlUrl:  \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetUrl()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetUrl() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/data/prapi.go",
    "content": "package data\n\nimport (\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"charm.land/log/v2\"\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n\tchecks \"github.com/dlvhdr/x/gh-checks\"\n\t\"github.com/shurcooL/githubv4\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\ntype SuggestedReviewer struct {\n\tIsAuthor    bool\n\tIsCommenter bool\n\tReviewer    struct {\n\t\tLogin string\n\t}\n}\n\ntype EnrichedPullRequestData struct {\n\tUrl     string\n\tNumber  int\n\tTitle   string\n\tBody    string\n\tState   string\n\tIsDraft bool\n\tAuthor  struct {\n\t\tLogin string\n\t}\n\tAuthorAssociation string\n\tUpdatedAt         time.Time\n\tCreatedAt         time.Time\n\tMergeable         string\n\tReviewDecision    string\n\tAdditions         int\n\tDeletions         int\n\tHeadRefName       string\n\tBaseRefName       string\n\tHeadRepository    struct {\n\t\tName string\n\t}\n\tHeadRef struct {\n\t\tName string\n\t}\n\tLabels             PRLabels  `graphql:\"labels(first: 6)\"`\n\tAssignees          Assignees `graphql:\"assignees(first: 3)\"`\n\tRepository         Repository\n\tCommits            LastCommitWithStatusChecks `graphql:\"commits(last: 1)\"`\n\tAllCommits         AllCommits                 `graphql:\"allCommits: commits(last: 100)\"`\n\tComments           CommentsWithBody           `graphql:\"comments(last: 50, orderBy: { field: UPDATED_AT, direction: DESC })\"`\n\tReviewThreads      ReviewThreadsWithComments  `graphql:\"reviewThreads(last: 50)\"`\n\tReviewRequests     ReviewRequests             `graphql:\"reviewRequests(last: 100)\"`\n\tReviews            Reviews                    `graphql:\"reviews(last: 100)\"`\n\tSuggestedReviewers []SuggestedReviewer\n\tFiles              ChangedFiles `graphql:\"files(first: 5)\"`\n}\n\ntype PullRequestData struct {\n\tNumber int\n\tTitle  string\n\tBody   string\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tAuthorAssociation string\n\tUpdatedAt         time.Time\n\tCreatedAt         time.Time\n\tUrl               string\n\tState             string\n\tMergeable         string\n\tReviewDecision    string\n\tAdditions         int\n\tDeletions         int\n\tHeadRefName       string\n\tBaseRefName       string\n\tHeadRepository    struct {\n\t\tName string\n\t}\n\tHeadRef struct {\n\t\tName string\n\t}\n\tRepository       Repository\n\tAssignees        Assignees      `graphql:\"assignees(first: 3)\"`\n\tComments         Comments       `graphql:\"comments\"`\n\tReviewThreads    ReviewThreads  `graphql:\"reviewThreads\"`\n\tReviews          Reviews        `graphql:\"reviews(last: 3)\"`\n\tReviewRequests   ReviewRequests `graphql:\"reviewRequests(last: 5)\"`\n\tFiles            ChangedFiles   `graphql:\"files(first: 5)\"`\n\tIsDraft          bool\n\tIsInMergeQueue   bool\n\tCommits          Commits          `graphql:\"commits(last: 1)\"`\n\tLabels           PRLabels         `graphql:\"labels(first: 6)\"`\n\tMergeStateStatus MergeStateStatus `graphql:\"mergeStateStatus\"`\n}\n\ntype CheckRun struct {\n\tName       graphql.String\n\tStatus     graphql.String\n\tConclusion checks.CheckRunState\n\tCheckSuite struct {\n\t\tCreator struct {\n\t\t\tLogin graphql.String\n\t\t}\n\t\tWorkflowRun struct {\n\t\t\tWorkflow struct {\n\t\t\t\tName graphql.String\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype StatusContext struct {\n\tContext graphql.String\n\tState   graphql.String\n\tCreator struct {\n\t\tLogin graphql.String\n\t}\n}\n\ntype CheckSuiteNode struct {\n\tStatus     graphql.String\n\tConclusion graphql.String\n\n\tApp struct {\n\t\tName graphql.String\n\t}\n\n\tWorkflowRun struct {\n\t\tWorkflow struct {\n\t\t\tName graphql.String\n\t\t}\n\t}\n}\n\ntype CheckSuites struct {\n\tTotalCount graphql.Int\n\tNodes      []CheckSuiteNode\n}\n\ntype StatusCheckRollupStats struct {\n\tState    checks.CommitState\n\tContexts struct {\n\t\tTotalCount                 graphql.Int\n\t\tCheckRunCount              graphql.Int\n\t\tCheckRunCountsByState      []ContextCountByState\n\t\tStatusContextCount         graphql.Int\n\t\tStatusContextCountsByState []ContextCountByState\n\t} `graphql:\"contexts(last: 1)\"`\n}\n\ntype AllCommits struct {\n\tNodes []struct {\n\t\tCommit struct {\n\t\t\tAbbreviatedOid  string\n\t\t\tCommittedDate   time.Time\n\t\t\tMessageHeadline string\n\t\t\tAuthor          struct {\n\t\t\t\tName string\n\t\t\t\tUser struct {\n\t\t\t\t\tLogin string\n\t\t\t\t}\n\t\t\t}\n\t\t\tStatusCheckRollup StatusCheckRollupStats\n\t\t}\n\t}\n}\n\ntype LastCommitWithStatusChecks struct {\n\tNodes []struct {\n\t\tCommit struct {\n\t\t\tDeployments struct {\n\t\t\t\tNodes []struct {\n\t\t\t\t\tTask        graphql.String\n\t\t\t\t\tDescription graphql.String\n\t\t\t\t}\n\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\tCommitUrl         graphql.String\n\t\t\tStatusCheckRollup struct {\n\t\t\t\tState    graphql.String\n\t\t\t\tContexts struct {\n\t\t\t\t\tTotalCount                 graphql.Int\n\t\t\t\t\tCheckRunCount              graphql.Int\n\t\t\t\t\tCheckRunCountsByState      []ContextCountByState\n\t\t\t\t\tStatusContextCount         graphql.Int\n\t\t\t\t\tStatusContextCountsByState []ContextCountByState\n\t\t\t\t\tNodes                      []struct {\n\t\t\t\t\t\tTypename      graphql.String `graphql:\"__typename\"`\n\t\t\t\t\t\tCheckRun      CheckRun       `graphql:\"... on CheckRun\"`\n\t\t\t\t\t\tStatusContext StatusContext  `graphql:\"... on StatusContext\"`\n\t\t\t\t\t}\n\t\t\t\t} `graphql:\"contexts(last: 100)\"`\n\t\t\t}\n\t\t\t// CheckSuites are fetched separately from StatusCheckRollup because\n\t\t\t// workflows awaiting approval (conclusion ACTION_REQUIRED) and workflows\n\t\t\t// still queued have no CheckRun objects yet, so they don’t appear in\n\t\t\t// StatusCheckRollup.contexts.\n\t\t\tCheckSuites CheckSuites `graphql:\"checkSuites(last: 20)\"`\n\t\t}\n\t}\n\tTotalCount int\n}\n\ntype CommentsWithBody struct {\n\tTotalCount graphql.Int\n\tNodes      []Comment\n}\n\ntype ContextCountByState = struct {\n\tCount graphql.Int\n\tState checks.CheckRunState\n}\n\ntype Commits struct {\n\tNodes []struct {\n\t\tCommit struct {\n\t\t\tDeployments struct {\n\t\t\t\tNodes []struct {\n\t\t\t\t\tTask        graphql.String\n\t\t\t\t\tDescription graphql.String\n\t\t\t\t}\n\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\tCommitUrl         graphql.String\n\t\t\tStatusCheckRollup struct {\n\t\t\t\tState graphql.String\n\t\t\t}\n\t\t}\n\t}\n\tTotalCount int\n}\n\ntype Comment struct {\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tBody      string\n\tUpdatedAt time.Time\n}\n\ntype ReviewComment struct {\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tBody      string\n\tUpdatedAt time.Time\n\tStartLine int\n\tLine      int\n}\n\ntype ReviewComments struct {\n\tNodes      []ReviewComment\n\tTotalCount int\n}\n\ntype Comments struct {\n\tTotalCount int\n}\n\ntype ReviewThreads struct {\n\tTotalCount int\n}\n\ntype Review struct {\n\tAuthor struct {\n\t\tLogin string\n\t}\n\tBody      string\n\tState     string\n\tUpdatedAt time.Time\n}\n\ntype Reviews struct {\n\tTotalCount int\n\tNodes      []Review\n}\n\ntype ReviewThreadsWithComments struct {\n\tNodes []struct {\n\t\tId           string\n\t\tIsOutdated   bool\n\t\tOriginalLine int\n\t\tStartLine    int\n\t\tLine         int\n\t\tPath         string\n\t\tComments     ReviewComments `graphql:\"comments(first: 20)\"`\n\t}\n}\n\ntype ChangedFile struct {\n\tAdditions  int\n\tDeletions  int\n\tPath       string\n\tChangeType string\n}\n\ntype ChangedFiles struct {\n\tTotalCount int\n\tNodes      []ChangedFile\n}\n\ntype RequestedReviewerUser struct {\n\tLogin string `graphql:\"login\"`\n}\n\ntype RequestedReviewerTeam struct {\n\tSlug string `graphql:\"slug\"`\n\tName string `graphql:\"name\"`\n}\n\ntype RequestedReviewerBot struct {\n\tLogin string `graphql:\"login\"`\n}\n\ntype RequestedReviewerMannequin struct {\n\tLogin string `graphql:\"login\"`\n}\n\ntype ReviewRequestNode struct {\n\tAsCodeOwner       bool `graphql:\"asCodeOwner\"`\n\tRequestedReviewer struct {\n\t\tUser      RequestedReviewerUser      `graphql:\"... on User\"`\n\t\tTeam      RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\tBot       RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\tMannequin RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t} `graphql:\"requestedReviewer\"`\n}\n\ntype ReviewRequests struct {\n\tTotalCount int\n\tNodes      []ReviewRequestNode\n}\n\nfunc (r ReviewRequestNode) GetReviewerDisplayName() string {\n\tif r.RequestedReviewer.User.Login != \"\" {\n\t\treturn r.RequestedReviewer.User.Login\n\t}\n\tif r.RequestedReviewer.Team.Slug != \"\" {\n\t\treturn r.RequestedReviewer.Team.Slug\n\t}\n\tif r.RequestedReviewer.Bot.Login != \"\" {\n\t\treturn r.RequestedReviewer.Bot.Login\n\t}\n\tif r.RequestedReviewer.Mannequin.Login != \"\" {\n\t\treturn r.RequestedReviewer.Mannequin.Login\n\t}\n\treturn \"\"\n}\n\nfunc (r ReviewRequestNode) GetReviewerType() string {\n\tif r.RequestedReviewer.User.Login != \"\" {\n\t\treturn \"User\"\n\t}\n\tif r.RequestedReviewer.Team.Slug != \"\" {\n\t\treturn \"Team\"\n\t}\n\tif r.RequestedReviewer.Bot.Login != \"\" {\n\t\treturn \"Bot\"\n\t}\n\tif r.RequestedReviewer.Mannequin.Login != \"\" {\n\t\treturn \"Mannequin\"\n\t}\n\treturn \"\"\n}\n\nfunc (r ReviewRequestNode) IsTeam() bool {\n\treturn r.RequestedReviewer.Team.Slug != \"\"\n}\n\ntype PRLabel struct {\n\tColor string\n\tName  string\n}\n\ntype PRLabels struct {\n\tNodes []Label\n}\n\ntype MergeStateStatus string\n\ntype PageInfo struct {\n\tHasNextPage bool\n\tStartCursor string\n\tEndCursor   string\n}\n\nfunc (data PullRequestData) GetAuthor(theme theme.Theme, showAuthorIcon bool) string {\n\tauthor := data.Author.Login\n\tif showAuthorIcon {\n\t\tauthor += fmt.Sprintf(\" %s\", GetAuthorRoleIcon(data.AuthorAssociation, theme))\n\t}\n\treturn author\n}\n\nfunc (data PullRequestData) GetTitle() string {\n\treturn data.Title\n}\n\nfunc (data PullRequestData) GetRepoNameWithOwner() string {\n\treturn data.Repository.NameWithOwner\n}\n\nfunc (data PullRequestData) GetNumber() int {\n\treturn data.Number\n}\n\nfunc (data PullRequestData) GetUrl() string {\n\treturn data.Url\n}\n\nfunc (data PullRequestData) GetUpdatedAt() time.Time {\n\treturn data.UpdatedAt\n}\n\nfunc (data PullRequestData) GetCreatedAt() time.Time {\n\treturn data.CreatedAt\n}\n\n// ToPullRequestData converts EnrichedPullRequestData to PullRequestData\n// This is useful when we fetch a single PR and need basic PR fields\nfunc (e EnrichedPullRequestData) ToPullRequestData() PullRequestData {\n\treturn PullRequestData{\n\t\tNumber:            e.Number,\n\t\tTitle:             e.Title,\n\t\tBody:              e.Body,\n\t\tAuthor:            e.Author,\n\t\tAuthorAssociation: e.AuthorAssociation,\n\t\tUpdatedAt:         e.UpdatedAt,\n\t\tCreatedAt:         e.CreatedAt,\n\t\tUrl:               e.Url,\n\t\tState:             e.State,\n\t\tMergeable:         e.Mergeable,\n\t\tReviewDecision:    e.ReviewDecision,\n\t\tAdditions:         e.Additions,\n\t\tDeletions:         e.Deletions,\n\t\tHeadRefName:       e.HeadRefName,\n\t\tBaseRefName:       e.BaseRefName,\n\t\tHeadRepository:    e.HeadRepository,\n\t\tHeadRef:           e.HeadRef,\n\t\tRepository:        e.Repository,\n\t\tAssignees:         e.Assignees,\n\t\tIsDraft:           e.IsDraft,\n\t\tLabels:            e.Labels,\n\t\tFiles:             e.Files,\n\t\t// Note: Comments, ReviewThreads, Reviews, ReviewRequests, Commits\n\t\t// have different types in EnrichedPullRequestData vs PullRequestData\n\t\t// We leave them as zero values since the enriched data will be used instead\n\t}\n}\n\nfunc makePullRequestsQuery(query string) string {\n\treturn fmt.Sprintf(\"is:pr archived:false %s sort:updated\", query)\n}\n\ntype PullRequestsResponse struct {\n\tPrs        []PullRequestData\n\tTotalCount int\n\tPageInfo   PageInfo\n}\n\nvar (\n\tclient       *gh.GraphQLClient\n\tcachedClient *gh.GraphQLClient\n)\n\nfunc SetClient(c *gh.GraphQLClient) {\n\tclient = c\n\tcachedClient = c\n}\n\n// ClearEnrichmentCache clears the cached GraphQL client used for fetching\n// enriched PR/Issue data. Call this when refreshing to ensure fresh data.\nfunc ClearEnrichmentCache() {\n\tcachedClient = nil\n}\n\n// IsEnrichmentCacheCleared returns true if the enrichment cache is cleared.\n// This is primarily for testing purposes.\nfunc IsEnrichmentCacheCleared() bool {\n\treturn cachedClient == nil\n}\n\nfunc FetchPullRequests(query string, limit int, pageInfo *PageInfo) (PullRequestsResponse, error) {\n\tvar err error\n\tif client == nil {\n\t\tif config.IsFeatureEnabled(config.FF_MOCK_DATA) {\n\t\t\tlog.Info(\"using mock data\", \"server\", \"https://localhost:3000\")\n\t\t\thttp.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{\n\t\t\t\tInsecureSkipVerify: true,\n\t\t\t}\n\t\t\tclient, err = gh.NewGraphQLClient(\n\t\t\t\tgh.ClientOptions{Host: \"localhost:3000\", AuthToken: \"fake-token\"},\n\t\t\t)\n\t\t} else {\n\t\t\tclient, err = gh.DefaultGraphQLClient()\n\t\t}\n\t}\n\n\tif err != nil {\n\t\treturn PullRequestsResponse{}, err\n\t}\n\n\tvar queryResult struct {\n\t\tSearch struct {\n\t\t\tNodes []struct {\n\t\t\t\tPullRequest PullRequestData `graphql:\"... on PullRequest\"`\n\t\t\t}\n\t\t\tIssueCount int\n\t\t\tPageInfo   PageInfo\n\t\t} `graphql:\"search(type: ISSUE, first: $limit, after: $endCursor, query: $query)\"`\n\t}\n\tvar endCursor *string\n\tif pageInfo != nil {\n\t\tendCursor = &pageInfo.EndCursor\n\t}\n\tvariables := map[string]any{\n\t\t\"query\":     graphql.String(makePullRequestsQuery(query)),\n\t\t\"limit\":     graphql.Int(limit),\n\t\t\"endCursor\": (*graphql.String)(endCursor),\n\t}\n\tlog.Debug(\"Fetching PRs\", \"query\", query, \"limit\", limit, \"endCursor\", endCursor)\n\terr = client.Query(\"SearchPullRequests\", &queryResult, variables)\n\tif err != nil {\n\t\treturn PullRequestsResponse{}, err\n\t}\n\tlog.Info(\"Successfully fetched PRs\", \"count\", queryResult.Search.IssueCount)\n\n\tprs := make([]PullRequestData, 0, len(queryResult.Search.Nodes))\n\tfor _, node := range queryResult.Search.Nodes {\n\t\tprs = append(prs, node.PullRequest)\n\t}\n\n\treturn PullRequestsResponse{\n\t\tPrs:        prs,\n\t\tTotalCount: queryResult.Search.IssueCount,\n\t\tPageInfo:   queryResult.Search.PageInfo,\n\t}, nil\n}\n\nfunc FetchPullRequest(prUrl string) (EnrichedPullRequestData, error) {\n\tvar err error\n\tif client == nil {\n\t\tclient, err = gh.DefaultGraphQLClient()\n\t\tif err != nil {\n\t\t\treturn EnrichedPullRequestData{}, err\n\t\t}\n\t}\n\n\tvar queryResult struct {\n\t\tResource struct {\n\t\t\tPullRequest EnrichedPullRequestData `graphql:\"... on PullRequest\"`\n\t\t} `graphql:\"resource(url: $url)\"`\n\t}\n\tparsedUrl, err := url.Parse(prUrl)\n\tif err != nil {\n\t\treturn EnrichedPullRequestData{}, err\n\t}\n\tvariables := map[string]any{\n\t\t\"url\": githubv4.URI{URL: parsedUrl},\n\t}\n\tlog.Debug(\"Fetching PR\", \"url\", prUrl)\n\terr = client.Query(\"FetchPullRequest\", &queryResult, variables)\n\tif err != nil {\n\t\treturn EnrichedPullRequestData{}, err\n\t}\n\tlog.Info(\"Successfully fetched PR\", \"url\", prUrl)\n\n\treturn queryResult.Resource.PullRequest, nil\n}\n"
  },
  {
    "path": "internal/data/prapi_test.go",
    "content": "package data\n\nimport (\n\t\"testing\"\n\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestClearEnrichmentCache(t *testing.T) {\n\t// Save original state\n\toriginalCachedClient := cachedClient\n\tdefer func() {\n\t\tcachedClient = originalCachedClient\n\t}()\n\n\tt.Run(\"clears nil cache without panic\", func(t *testing.T) {\n\t\tcachedClient = nil\n\t\trequire.True(t, IsEnrichmentCacheCleared(), \"cache should be cleared initially\")\n\n\t\tClearEnrichmentCache()\n\t\trequire.True(t, IsEnrichmentCacheCleared(), \"cache should remain cleared\")\n\t})\n\n\tt.Run(\"clears non-nil cache\", func(t *testing.T) {\n\t\t// Simulate having a cached client (we use an empty struct pointer\n\t\t// since we can't create a real GraphQL client without credentials)\n\t\tcachedClient = &gh.GraphQLClient{}\n\t\trequire.False(\n\t\t\tt,\n\t\t\tIsEnrichmentCacheCleared(),\n\t\t\t\"cache should not be cleared when client is set\",\n\t\t)\n\n\t\tClearEnrichmentCache()\n\t\trequire.True(\n\t\t\tt,\n\t\t\tIsEnrichmentCacheCleared(),\n\t\t\t\"cache should be cleared after ClearEnrichmentCache\",\n\t\t)\n\t})\n}\n\nfunc TestIsEnrichmentCacheCleared(t *testing.T) {\n\t// Save original state\n\toriginalCachedClient := cachedClient\n\tdefer func() {\n\t\tcachedClient = originalCachedClient\n\t}()\n\n\tt.Run(\"returns true when cache is nil\", func(t *testing.T) {\n\t\tcachedClient = nil\n\t\trequire.True(t, IsEnrichmentCacheCleared())\n\t})\n\n\tt.Run(\"returns false when cache is set\", func(t *testing.T) {\n\t\tcachedClient = &gh.GraphQLClient{}\n\t\trequire.False(t, IsEnrichmentCacheCleared())\n\t})\n}\n\nfunc TestSetClient(t *testing.T) {\n\t// Save original state\n\toriginalClient := client\n\toriginalCachedClient := cachedClient\n\tdefer func() {\n\t\tclient = originalClient\n\t\tcachedClient = originalCachedClient\n\t}()\n\n\tt.Run(\"sets both client and cachedClient\", func(t *testing.T) {\n\t\tclient = nil\n\t\tcachedClient = nil\n\n\t\t// SetClient with nil should set both to nil\n\t\tSetClient(nil)\n\t\trequire.Nil(t, client)\n\t\trequire.True(t, IsEnrichmentCacheCleared())\n\t})\n}\n"
  },
  {
    "path": "internal/data/repository.go",
    "content": "package data\n\nimport (\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n)\n\ntype BranchProtectionRules struct {\n\tNodes []struct {\n\t\tRequiredApprovingReviewCount int\n\t\tRequiresApprovingReviews     graphql.Boolean\n\t\tRequiresCodeOwnerReviews     graphql.Boolean\n\t\tRequiresStatusChecks         graphql.Boolean\n\t\tRequiredStatusCheckContexts  []graphql.String\n\t}\n}\n\ntype Repository struct {\n\tName                  string\n\tNameWithOwner         string\n\tIsArchived            bool\n\tBranchProtectionRules BranchProtectionRules `graphql:\"branchProtectionRules(first: 1)\"`\n}\n"
  },
  {
    "path": "internal/data/user.go",
    "content": "package data\n\nimport (\n\tgh \"github.com/cli/go-gh/v2/pkg/api\"\n)\n\nfunc CurrentLoginName() (string, error) {\n\tclient, err := gh.DefaultGraphQLClient()\n\tif err != nil {\n\t\treturn \"\", nil\n\t}\n\n\tvar query struct {\n\t\tViewer struct {\n\t\t\tLogin string\n\t\t}\n\t}\n\terr = client.Query(\"UserCurrent\", &query, nil)\n\treturn query.Viewer.Login, err\n}\n"
  },
  {
    "path": "internal/data/utils.go",
    "content": "package data\n\nimport (\n\t\"time\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\ntype RowData interface {\n\tGetRepoNameWithOwner() string\n\tGetTitle() string\n\tGetNumber() int\n\tGetUrl() string\n\tGetUpdatedAt() time.Time\n}\n\nfunc GetAuthorRoleIcon(role string, theme theme.Theme) string {\n\t// https://docs.github.com/en/graphql/reference/enums#commentauthorassociation\n\tswitch role {\n\tcase \"FIRST_TIMER\", \"FIRST_TIME_CONTRIBUTOR\", \"NONE\":\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.NewContributorIconColor)).\n\t\t\tRender(theme.NewContributorIcon)\n\tcase \"COLLABORATOR\":\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.CollaboratorIconColor)).\n\t\t\tRender(theme.CollaboratorIcon)\n\tcase \"CONTRIBUTOR\":\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.ContributorIconColor)).\n\t\t\tRender(theme.ContributorIcon)\n\tcase \"MEMBER\":\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.MemberIconColor)).\n\t\t\tRender(theme.MemberIcon)\n\tcase \"OWNER\":\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.OwnerIconColor)).\n\t\t\tRender(theme.OwnerIcon)\n\tdefault:\n\t\treturn lipgloss.NewStyle().\n\t\t\tForeground(compat.AdaptiveColor(theme.UnknownRoleIconColor)).\n\t\t\tRender(theme.UnknownRoleIcon)\n\t}\n}\n"
  },
  {
    "path": "internal/git/git.go",
    "content": "package git\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\tgitm \"github.com/aymanbagabas/git-module\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\n// Extends git.Repository\ntype Repo struct {\n\tgitm.Repository\n\tOrigin         string\n\tRemotes        []string\n\tBranches       []Branch\n\tHeadBranchName string\n\tStatus         gitm.NameStatus\n}\n\ntype Branch struct {\n\tName          string\n\tLastUpdatedAt *time.Time\n\tCreatedAt     *time.Time\n\tLastCommitMsg *string\n\tCommitsAhead  int\n\tCommitsBehind int\n\tIsCheckedOut  bool\n\tRemotes       []string\n}\n\nfunc GetOriginUrl(dir string) (string, error) {\n\trepo, err := gitm.Open(dir)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tremotes, err := repo.Remotes()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor _, remote := range remotes {\n\t\tif remote != \"origin\" {\n\t\t\tcontinue\n\t\t}\n\n\t\turls, err := gitm.RemoteGetURL(dir, remote)\n\t\tif err != nil || len(urls) == 0 {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn urls[0], nil\n\t}\n\n\treturn \"\", errors.New(\"no origin remote found\")\n}\n\nfunc GetRepo(dir string) (*Repo, error) {\n\trepo, err := gitm.Open(dir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbNames, err := repo.Branches()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\theadRef, err := repo.RevParse(\"HEAD\", gitm.RevParseOptions{\n\t\tCommandOptions: gitm.CommandOptions{Args: []string{\"--abbrev-ref\"}},\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tstatus, err := getUnstagedStatus(repo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbranches := make([]Branch, len(bNames))\n\tfor i, b := range bNames {\n\t\tvar updatedAt *time.Time\n\t\tvar lastCommitMsg *string\n\t\tisHead := b == headRef\n\t\tcommits, err := gitm.Log(dir, b, gitm.LogOptions{MaxCount: 1})\n\t\tif err == nil && len(commits) > 0 {\n\t\t\tupdatedAt = &commits[0].Committer.When\n\t\t\tlastCommitMsg = utils.StringPtr(commits[0].Summary())\n\t\t}\n\t\tcommitsAhead, err := repo.RevListCount([]string{fmt.Sprintf(\"origin/%s..%s\", b, b)})\n\t\tif err != nil {\n\t\t\tcommitsAhead = 0\n\t\t}\n\t\tcommitsBehind, err := repo.RevListCount([]string{fmt.Sprintf(\"%s..origin/%s\", b, b)})\n\t\tif err != nil {\n\t\t\tcommitsBehind = 0\n\t\t}\n\t\tremotes, _ := repo.RemoteGetURL(b)\n\t\tbranches[i] = Branch{\n\t\t\tName:          b,\n\t\t\tLastUpdatedAt: updatedAt,\n\t\t\tCreatedAt:     updatedAt,\n\t\t\tIsCheckedOut:  isHead,\n\t\t\tRemotes:       remotes,\n\t\t\tLastCommitMsg: lastCommitMsg,\n\t\t\tCommitsAhead:  int(commitsAhead),\n\t\t\tCommitsBehind: int(commitsBehind),\n\t\t}\n\t}\n\tsort.Slice(branches, func(i, j int) bool {\n\t\tif branches[j].LastUpdatedAt == nil || branches[i].LastUpdatedAt == nil {\n\t\t\treturn false\n\t\t}\n\t\treturn branches[i].LastUpdatedAt.After(*branches[j].LastUpdatedAt)\n\t})\n\n\theadBranch, err := repo.SymbolicRef()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\theadBranch, _ = strings.CutPrefix(headBranch, gitm.RefsHeads)\n\n\tremotes, err := repo.Remotes(\n\t\tgitm.RemotesOptions{CommandOptions: gitm.CommandOptions{Args: []string{\"show\"}}},\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\torigin, err := gitm.RemoteGetURL(dir, \"origin\", gitm.RemoteGetURLOptions{All: true})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &Repo{\n\t\tRepository: *repo, Origin: origin[0], Remotes: remotes,\n\t\tHeadBranchName: headBranch, Branches: branches, Status: status,\n\t}, nil\n}\n\nfunc GetStatus(dir string) (gitm.NameStatus, error) {\n\trepo, err := gitm.Open(dir)\n\tif err != nil {\n\t\treturn gitm.NameStatus{}, err\n\t}\n\treturn getUnstagedStatus(repo)\n}\n\n// test\nfunc getUnstagedStatus(repo *gitm.Repository) (gitm.NameStatus, error) {\n\tcmd := gitm.NewCommand(\"diff\", \"HEAD\", \"--name-status\")\n\tstdout, err := cmd.RunInDir(repo.Path())\n\tif err != nil {\n\t\treturn gitm.NameStatus{}, err\n\t}\n\tstatus := gitm.NameStatus{}\n\tscanner := bufio.NewScanner(bytes.NewReader(stdout))\n\tfor scanner.Scan() {\n\t\tfields := strings.Fields(scanner.Text())\n\t\tif len(fields) < 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch fields[0][0] {\n\t\tcase 'A':\n\t\t\tstatus.Added = append(status.Added, fields[1])\n\t\tcase 'D':\n\t\t\tstatus.Removed = append(status.Removed, fields[1])\n\t\tcase 'M':\n\t\t\tstatus.Modified = append(status.Modified, fields[1])\n\t\t}\n\t}\n\treturn status, err\n}\n\nfunc FetchRepo(dir string) (*Repo, error) {\n\trepo, err := gitm.Open(dir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = repo.Fetch(\n\t\tgitm.FetchOptions{CommandOptions: gitm.CommandOptions{Args: []string{\"--all\"}}},\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn GetRepo(dir)\n}\n\nfunc GetRepoInPwd() (*gitm.Repository, error) {\n\treturn gitm.Open(\".\")\n}\n\nfunc GetRepoShortName(url string) string {\n\tr, _ := strings.CutPrefix(url, \"https://github.com/\")\n\tr, _ = strings.CutSuffix(r, \".git\")\n\treturn r\n}\n"
  },
  {
    "path": "internal/tui/common/diff.go",
    "content": "package common\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n)\n\n// DiffPR opens a diff view for a PR using the gh CLI.\n// The env parameter should be the result of Config.GetFullScreenDiffPagerEnv().\nfunc DiffPR(prNumber int, repoName string, env []string) tea.Cmd {\n\tc := exec.Command(\n\t\t\"gh\",\n\t\t\"pr\",\n\t\t\"diff\",\n\t\tfmt.Sprint(prNumber),\n\t\t\"-R\",\n\t\trepoName,\n\t)\n\tc.Env = env\n\n\treturn tea.ExecProcess(c, func(err error) tea.Msg {\n\t\tif err != nil {\n\t\t\treturn constants.ErrMsg{Err: err}\n\t\t}\n\t\treturn nil\n\t})\n}\n"
  },
  {
    "path": "internal/tui/common/diff_test.go",
    "content": "package common\n\nimport (\n\t\"testing\"\n)\n\nfunc TestDiffPR(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tprNumber int\n\t\trepoName string\n\t\twantNil  bool\n\t}{\n\t\t{\n\t\t\tname:     \"returns command for valid PR\",\n\t\t\tprNumber: 123,\n\t\t\trepoName: \"owner/repo\",\n\t\t\twantNil:  false,\n\t\t},\n\t\t{\n\t\t\tname:     \"returns command for PR number 0\",\n\t\t\tprNumber: 0,\n\t\t\trepoName: \"owner/repo\",\n\t\t\twantNil:  false,\n\t\t},\n\t\t{\n\t\t\tname:     \"returns command with hyphenated repo name\",\n\t\t\tprNumber: 456,\n\t\t\trepoName: \"my-org/my-repo\",\n\t\t\twantNil:  false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcmd := DiffPR(tt.prNumber, tt.repoName, nil)\n\n\t\t\tif tt.wantNil && cmd != nil {\n\t\t\t\tt.Errorf(\"DiffPR() returned non-nil, want nil\")\n\t\t\t}\n\t\t\tif !tt.wantNil && cmd == nil {\n\t\t\t\tt.Errorf(\"DiffPR() returned nil, want non-nil\")\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/common/labels.go",
    "content": "package common\n\nimport (\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\nfunc RenderLabels(sidebarWidth int, labels []data.Label, pillStyle lipgloss.Style) string {\n\twidth := sidebarWidth\n\n\trenderedRows := []string{}\n\n\trowContentsWidth := 0\n\tcurrentRowLabels := []string{}\n\n\tfor _, l := range labels {\n\t\tc := lipgloss.Color(\"#\" + l.Color)\n\t\tcurrentLabel := pillStyle.\n\t\t\tBorderForeground(c).\n\t\t\tBackground(c).\n\t\t\tRender(l.Name)\n\n\t\tcurrentLabelWidth := lipgloss.Width(currentLabel)\n\n\t\tif rowContentsWidth+currentLabelWidth <= width {\n\t\t\tcurrentRowLabels = append(\n\t\t\t\tcurrentRowLabels,\n\t\t\t\tcurrentLabel,\n\t\t\t)\n\t\t\trowContentsWidth += currentLabelWidth\n\t\t} else {\n\t\t\tcurrentRowLabels = append(currentRowLabels, \"\\n\")\n\t\t\trenderedRows = append(\n\t\t\t\trenderedRows,\n\t\t\t\tlipgloss.JoinHorizontal(lipgloss.Top, currentRowLabels...),\n\t\t\t)\n\n\t\t\tcurrentRowLabels = []string{currentLabel}\n\t\t\trowContentsWidth = currentLabelWidth\n\t\t}\n\n\t\t// +1 for the space between labels\n\t\tcurrentRowLabels = append(currentRowLabels, \" \")\n\t\trowContentsWidth += 1\n\t}\n\n\trenderedRows = append(renderedRows, lipgloss.JoinHorizontal(lipgloss.Top, currentRowLabels...))\n\n\treturn lipgloss.JoinVertical(lipgloss.Left, renderedRows...)\n}\n"
  },
  {
    "path": "internal/tui/common/labels_test.go",
    "content": "package common_test\n\nimport (\n\t\"testing\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n)\n\nvar defaultStyle = lipgloss.NewStyle().PaddingLeft(1).PaddingRight(1)\n\nfunc TestRenderLabels(t *testing.T) {\n\ttestCases := map[string]struct {\n\t\twidth     int\n\t\tlabels    []data.Label\n\t\tbaseStyle lipgloss.Style\n\t\twant      string\n\t}{\n\t\t\"one label, one row\": {\n\t\t\twidth:     20,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"label-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" label-1  \",\n\t\t},\n\t\t\"two labels, one row\": {\n\t\t\twidth:     20,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"l-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"l-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" l-1   l-2  \",\n\t\t},\n\t\t\"two labels, two rows\": {\n\t\t\twidth:     10,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"label-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"label-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" label-1  \\n          \\n label-2  \",\n\t\t},\n\t\t\"three labels, two rows\": {\n\t\t\twidth:     20,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"l-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"l-2\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"label-3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" l-1   l-2  \\n            \\n label-3    \",\n\t\t},\n\t\t\"two labels, two rows, labels equal width\": {\n\t\t\twidth:     5,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"l-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"l-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" l-1  \\n      \\n l-2  \",\n\t\t},\n\t\t\"two labels, one row, labels equal width\": {\n\t\t\twidth:     11,\n\t\t\tbaseStyle: defaultStyle,\n\t\t\tlabels: []data.Label{\n\t\t\t\t{\n\t\t\t\t\tName: \"l-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"l-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \" l-1   l-2  \",\n\t\t},\n\t}\n\n\tfor name, tc := range testCases {\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tgot := common.RenderLabels(tc.width, tc.labels, tc.baseStyle)\n\t\t\trequire.Equal(t, tc.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/common/repopath.go",
    "content": "package common\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// GetRepoLocalPath returns the local path for a given repo name.\n// It will return the path if it exists in the config, or if the\n// repo name matches a wildcard path in the config.\n// It will prioritize exact repo name matches over wildcard matches.\n// If the second return value is true, the first return value is guaranteed\n// to be a valid path.\n// If the second return value is false, the first return value is undefined.\n// For a given config of:\n//\n//\t{\n//\t  \"user/repo\": \"/path/to/user/repo\",\n//\t  \"user_2/*\":  \"/path/to/user_2/*\",\n//\t}\n//\n// GetRepoLocalPath(\"user/repo\", config) will return: \"/path/to/user/repo\", true\n// GetRepoLocalPath(\"user_2/some_repo\", config) will return: \"/path/to/user_2/some_repo\", true\n// GetRepoLocalPath(\"user/other_repo\", config) will return: \"\", false\nfunc GetRepoLocalPath(repoName string, cfgPaths map[string]string) (string, bool) {\n\texactMatchPath, ok := cfgPaths[repoName]\n\t// prioritize full repo to path mapping in config\n\tif ok {\n\t\treturn exactMatchPath, true\n\t}\n\n\towner, repo, repoValid := func() (string, string, bool) {\n\t\trepoParts := strings.Split(repoName, \"/\")\n\t\t// return repo owner, repo, and indicate properly owner/repo format\n\t\treturn repoParts[0], repoParts[len(repoParts)-1], len(repoParts) == 2\n\t}()\n\n\tif !repoValid {\n\t\treturn \"\", false\n\t}\n\n\t// match config:repoPath values of {owner}/* as map key\n\twildcardPath, wildcardFound := cfgPaths[fmt.Sprintf(\"%s/*\", owner)]\n\n\tif wildcardFound {\n\t\t// adjust wildcard match to wildcard path - ~/somepath/* to ~/somepath/{repo}\n\t\treturn fmt.Sprintf(\"%s/%s\", strings.TrimSuffix(wildcardPath, \"/*\"), repo), true\n\t}\n\n\tif template, ok := cfgPaths[\":owner/:repo\"]; ok {\n\t\treturn strings.ReplaceAll(\n\t\t\tstrings.ReplaceAll(template, \":owner\", owner),\n\t\t\t\":repo\",\n\t\t\trepo,\n\t\t), true\n\t}\n\n\treturn \"\", false\n}\n"
  },
  {
    "path": "internal/tui/common/repopath_test.go",
    "content": "package common_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n)\n\nvar configPaths = map[string]string{\n\t\"user/repo\": \"/path/to/user/repo\",\n\t\"user_2/*\":  \"/path/to/user_2/*\",\n}\n\nvar configPathsWithOwnerRepoTemplateIgnoringOwner = map[string]string{\n\t\"user/repo\":    \"/path/to/user/repo\",\n\t\"user_2/*\":     \"/path/to/user_2/*\",\n\t\":owner/:repo\": \"/path/to/user/dev/:repo\",\n}\n\nvar configPathsWithOwnerRepoTemplate = map[string]string{\n\t\"user/repo\":    \"/path/to/the_repo\",\n\t\"org/*\":        \"/path/to/the_org/*\",\n\t\":owner/:repo\": \"/path/to/github.com/:owner/:repo\",\n}\n\nfunc TestGetRepoLocalPath(t *testing.T) {\n\ttestCases := map[string]struct {\n\t\trepo        string\n\t\twant        string\n\t\tfound       bool\n\t\tconfigPaths map[string]string\n\t}{\n\t\t\"exact match\": {\n\t\t\trepo:        \"user/repo\",\n\t\t\twant:        \"/path/to/user/repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPaths,\n\t\t},\n\t\t\"exact no match\": {\n\t\t\trepo:        \"user/other_repo\",\n\t\t\twant:        \"\",\n\t\t\tfound:       false,\n\t\t\tconfigPaths: configPaths,\n\t\t},\n\t\t\"wildcard match\": {\n\t\t\trepo:        \"user_2/repo123\",\n\t\t\twant:        \"/path/to/user_2/repo123\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPaths,\n\t\t},\n\t\t\"bad path\": {\n\t\t\trepo:        \"invalid-lookup\",\n\t\t\twant:        \"\",\n\t\t\tfound:       false,\n\t\t\tconfigPaths: configPaths,\n\t\t},\n\t\t\"with :owner/:repo template: ignoring owner substitution\": {\n\t\t\trepo:        \"user3/repo\",\n\t\t\twant:        \"/path/to/user/dev/repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPathsWithOwnerRepoTemplateIgnoringOwner,\n\t\t},\n\t\t\"with :owner/:repo template: exact match\": {\n\t\t\trepo:        \"user/repo\",\n\t\t\twant:        \"/path/to/the_repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPathsWithOwnerRepoTemplate,\n\t\t},\n\t\t\"with :owner/:repo template: no match for this sibling repo\": {\n\t\t\trepo:        \"user/another_repo\",\n\t\t\twant:        \"/path/to/github.com/user/another_repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPathsWithOwnerRepoTemplate,\n\t\t},\n\t\t\"with :owner/:repo template: wildcard repo match\": {\n\t\t\trepo:        \"org/some_repo\",\n\t\t\twant:        \"/path/to/the_org/some_repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPathsWithOwnerRepoTemplate,\n\t\t},\n\t\t\"with :owner/:repo template: general fallback\": {\n\t\t\trepo:        \"any-owner/any-repo\",\n\t\t\twant:        \"/path/to/github.com/any-owner/any-repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: configPathsWithOwnerRepoTemplate,\n\t\t},\n\t\t\"with :owner/:repo template: repeated :repo substitution\": {\n\t\t\trepo:        \"any-owner/any-repo\",\n\t\t\twant:        \"src/github.com/any-owner/any-repo/any-repo\",\n\t\t\tfound:       true,\n\t\t\tconfigPaths: map[string]string{\":owner/:repo\": \"src/github.com/:owner/:repo/:repo\"},\n\t\t},\n\t}\n\n\tfor name, tc := range testCases {\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tgot, found := common.GetRepoLocalPath(tc.repo, tc.configPaths)\n\t\t\trequire.Equal(t, tc.want, got)\n\t\t\trequire.Equal(t, tc.found, found)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/common/styles.go",
    "content": "package common\n\nimport (\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\nvar (\n\tHeaderHeight       = 2\n\tSearchHeight       = 3\n\tFooterHeight       = 1\n\tExpandedHelpHeight = 17\n\tInputBoxHeight     = 8\n\tSingleRuneWidth    = 4\n\tMainContentPadding = 1\n\tTabsBorderHeight   = 1\n\tTabsContentHeight  = 2\n\tTabsHeight         = TabsBorderHeight + TabsContentHeight\n\tViewSwitcherMargin = 1\n\tTableHeaderHeight  = 2\n)\n\ntype CommonStyles struct {\n\tMainTextStyle       lipgloss.Style\n\tFaintTextStyle      lipgloss.Style\n\tFooterStyle         lipgloss.Style\n\tErrorStyle          lipgloss.Style\n\tSuccessStyle        lipgloss.Style\n\tDraftGlyph          string\n\tPersonGlyph         string\n\tWaitingGlyph        string\n\tWaitingDotGlyph     string\n\tFailureGlyph        string\n\tSuccessGlyph        string\n\tMergedGlyph         string\n\tCommentGlyph        string\n\tActionRequiredGlyph string\n}\n\nfunc BuildStyles(theme theme.Theme) CommonStyles {\n\tvar s CommonStyles\n\n\ts.MainTextStyle = lipgloss.NewStyle().\n\t\tForeground(theme.PrimaryText).\n\t\tBold(true)\n\ts.FaintTextStyle = lipgloss.NewStyle().\n\t\tForeground(theme.FaintText)\n\ts.FooterStyle = lipgloss.NewStyle().\n\t\tBackground(theme.SelectedBackground).\n\t\tHeight(FooterHeight)\n\n\ts.ErrorStyle = lipgloss.NewStyle().Foreground(theme.ErrorText)\n\ts.SuccessStyle = lipgloss.NewStyle().Foreground(theme.SuccessText)\n\n\ts.PersonGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.FaintText).\n\t\tRender(constants.PersonIcon)\n\ts.WaitingGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.WarningText).\n\t\tRender(constants.WaitingIcon)\n\ts.WaitingDotGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.WarningText).\n\t\tRender(constants.DotIcon)\n\ts.FailureGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.ErrorText).\n\t\tRender(constants.FailureIcon)\n\ts.SuccessGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.SuccessText).\n\t\tRender(constants.SuccessIcon)\n\ts.CommentGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.PrimaryText).\n\t\tRender(constants.CommentIcon)\n\ts.DraftGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.PrimaryText).\n\t\tRender(constants.DraftIcon)\n\ts.MergedGlyph = lipgloss.NewStyle().\n\t\tForeground(compat.AdaptiveColor{\n\t\t\tLight: lipgloss.Color(\"#A371F7\"),\n\t\t\tDark:  lipgloss.Color(\"#A371F7\"),\n\t\t}).\n\t\tRender(constants.MergedIcon)\n\ts.ActionRequiredGlyph = lipgloss.NewStyle().\n\t\tForeground(theme.WarningText).\n\t\tRender(constants.ActionRequiredIcon)\n\treturn s\n}\n\n// RenderPreviewHeader renders the repo/number line at the top of preview panes\n// (e.g., \"owner/repo · #123\" or \"#123 · owner/repo\")\nfunc RenderPreviewHeader(theme theme.Theme, width int, text string) string {\n\treturn lipgloss.NewStyle().\n\t\tPaddingLeft(1).\n\t\tWidth(width).\n\t\tBackground(theme.SelectedBackground).\n\t\tForeground(theme.SecondaryText).\n\t\tRender(text)\n}\n\n// RenderPreviewTitle renders the title block with background highlight\nfunc RenderPreviewTitle(theme theme.Theme, styles CommonStyles, width int, title string) string {\n\treturn lipgloss.NewStyle().Height(3).Width(width).Background(\n\t\ttheme.SelectedBackground).PaddingLeft(1).Render(\n\t\tlipgloss.PlaceVertical(3, lipgloss.Center, styles.MainTextStyle.\n\t\t\tBackground(theme.SelectedBackground).\n\t\t\tRender(title),\n\t\t),\n\t)\n}\n"
  },
  {
    "path": "internal/tui/components/autocomplete/autocomplete.go",
    "content": "package autocomplete\n\nimport (\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/help\"\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/spinner\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"github.com/charmbracelet/x/ansi\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/sahilm/fuzzy\"\n)\n\n// suggestionList wraps a slice of strings to implement fuzzy.Source\ntype suggestionList struct {\n\titems []string\n}\n\nfunc (s suggestionList) String(i int) string {\n\treturn s.items[i]\n}\n\ntype FetchState int\n\nfunc (s suggestionList) Len() int {\n\treturn len(s.items)\n}\n\nvar (\n\tNextKey = key.NewBinding(\n\t\tkey.WithKeys(\"down\", \"ctrl+n\"),\n\t\tkey.WithHelp(\"↓/Ctrl+n\", \"next\"),\n\t)\n\tPrevKey = key.NewBinding(\n\t\tkey.WithKeys(\"up\", \"ctrl+p\"),\n\t\tkey.WithHelp(\"↑/Ctrl+p\", \"previous\"),\n\t)\n\tSelectKey = key.NewBinding(\n\t\tkey.WithKeys(\"tab\", \"enter\", \"ctrl+y\"),\n\t\tkey.WithHelp(\"tab/enter/Ctrl+y\", \"select\"),\n\t)\n\tRefreshSuggestionsKey = key.NewBinding(\n\t\tkey.WithKeys(\"ctrl+f\"),\n\t\tkey.WithHelp(\"Ctrl+f\", \"refresh suggestions\"),\n\t)\n\tToggleSuggestions = key.NewBinding(\n\t\tkey.WithKeys(\"ctrl+h\"),\n\t\tkey.WithHelp(\"Ctrl+h\", \"toggle suggestions\"),\n\t)\n)\n\nvar suggestionKeys = []key.Binding{\n\tNextKey,\n\tPrevKey,\n\tSelectKey,\n\tRefreshSuggestionsKey,\n}\n\nconst (\n\tFetchStateIdle FetchState = iota\n\tFetchStateLoading\n\tFetchStateSuccess\n\tFetchStateError\n)\n\n// ClearFetchStatusMsg is sent to clear the fetch status after a delay\ntype ClearFetchStatusMsg struct{}\n\n// FetchSuggestionsRequestedMsg requests that the current view fetch suggestions from upstream.\n//\n// When Force is true the fetch should bypass any local cache and request fresh\n// data from the gh CLI.\ntype FetchSuggestionsRequestedMsg struct {\n\tForce bool\n}\n\n// NewFetchSuggestionsRequestedCmd returns a tea.Cmd that emits a\n// FetchSuggestionsRequestedMsg with the given force flag.\nfunc NewFetchSuggestionsRequestedCmd(force bool) tea.Cmd {\n\treturn func() tea.Msg { return FetchSuggestionsRequestedMsg{Force: force} }\n}\n\ntype Model struct {\n\tctx            *context.ProgramContext\n\tsuggestionHelp help.Model\n\tsuggestions    []string\n\tfiltered       []string\n\tselected       int\n\tvisible        bool\n\tmaxVisible     int\n\twidth          int\n\tfetchState     FetchState\n\tfetchError     error\n\tspinner        spinner.Model\n\t// whether the user explicitly hid the suggestions; when true\n\t// Show() will not re-open the popup automatically until Unsuppress()\n\thiddenByUser bool\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tsp := spinner.New()\n\tsp.Spinner = spinner.Dot\n\tsp.Style = lipgloss.NewStyle().Foreground(ctx.Theme.SecondaryText)\n\n\th := help.New()\n\th.Styles = ctx.Styles.Help.BubbleStyles\n\treturn Model{\n\t\tctx:            ctx,\n\t\tsuggestionHelp: h,\n\t\tvisible:        false,\n\t\tselected:       0,\n\t\tmaxVisible:     4,\n\t\twidth:          30,\n\t\tfetchState:     FetchStateIdle,\n\t\tspinner:        sp,\n\t}\n}\n\nfunc (m *Model) SetSuggestions(suggestions []string) {\n\tm.suggestions = suggestions\n}\n\nfunc (m *Model) Show(currentItem string, excludeItems []string) {\n\texcludeMap := make(map[string]bool)\n\tfor _, item := range excludeItems {\n\t\texcludeMap[strings.ToLower(strings.TrimSpace(item))] = true\n\t}\n\n\t// Filter excluded labels first\n\tvar filteredSuggestions []string\n\tfor _, suggestion := range m.suggestions {\n\t\tif !excludeMap[strings.ToLower(strings.TrimSpace(suggestion))] {\n\t\t\tfilteredSuggestions = append(filteredSuggestions, suggestion)\n\t\t}\n\t}\n\n\tif currentItem == \"\" || len(filteredSuggestions) == 0 {\n\t\tm.filtered = filteredSuggestions\n\t\tif len(m.filtered) > m.maxVisible {\n\t\t\tm.filtered = m.filtered[:m.maxVisible]\n\t\t}\n\t\tm.selected = 0\n\t\t// respect suppression: don't auto-show if suppressed\n\t\tm.UpdateVisible()\n\t\treturn\n\t}\n\n\t// Use fuzzy.FindFrom with suggestionList as Source\n\tlist := suggestionList{items: filteredSuggestions}\n\tmatches := fuzzy.FindFrom(currentItem, list)\n\n\t// Collect matched items up to maxResults\n\tm.filtered = make([]string, 0, m.maxVisible)\n\tfor _, match := range matches {\n\t\tif len(m.filtered) >= m.maxVisible {\n\t\t\tbreak\n\t\t}\n\t\tm.filtered = append(m.filtered, match.Str)\n\t}\n\n\tm.selected = 0\n\t// respect suppression: don't auto-show if suppressed\n\tm.UpdateVisible()\n}\n\nfunc (m *Model) Selected() string {\n\tif m.selected >= 0 && m.selected < len(m.filtered) {\n\t\treturn m.filtered[m.selected]\n\t}\n\treturn \"\"\n}\n\nfunc (m *Model) Next() {\n\tif len(m.filtered) > 0 {\n\t\tm.selected = (m.selected + 1) % len(m.filtered)\n\t}\n}\n\nfunc (m *Model) Prev() {\n\tif len(m.filtered) == 0 {\n\t\treturn\n\t}\n\tm.selected--\n\tif m.selected < 0 {\n\t\tm.selected = len(m.filtered) - 1\n\t}\n}\n\nfunc (m *Model) Hide() {\n\tm.visible = false\n}\n\n// Reset clears all autocomplete state including filtered suggestions, selection,\n// and visibility flags. Use this when switching between different input modes\n// (e.g., from labeling to commenting) to prevent stale suggestions from leaking.\nfunc (m *Model) Reset() {\n\tm.filtered = nil\n\tm.selected = 0\n\tm.visible = false\n\tm.hiddenByUser = false\n}\n\n// Suppress hides the popup immediately and prevents it from being shown again\n// automatically until `Unsuppress()` is called. The underlying filtered results\n// are still updated while suppressed so navigation and selection keys will\n// operate on up-to-date suggestions even though the popup is not visible.\nfunc (m *Model) Suppress() {\n\tm.hiddenByUser = true\n\tm.visible = false\n}\n\n// Unsuppress clears the user hide flag and allows auto-showing again.\nfunc (m *Model) Unsuppress() {\n\tm.hiddenByUser = false\n}\n\nfunc (m *Model) IsVisible() bool {\n\treturn m.visible\n}\n\n// HasSuggestions returns true if there are filtered suggestions available.\nfunc (m *Model) HasSuggestions() bool {\n\treturn len(m.filtered) > 0\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.width = max(0, width)\n}\n\nfunc (m *Model) View() string {\n\tif !m.visible || len(m.filtered) == 0 {\n\t\treturn \"\"\n\t}\n\n\tnumVisible := min(len(m.filtered), m.maxVisible)\n\n\tvar b strings.Builder\n\n\tpopupStyle := m.ctx.Styles.Autocomplete.PopupStyle.Width(m.width)\n\tmaxLabelWidth := m.width - popupStyle.GetHorizontalPadding()\n\tellipsisWidth := lipgloss.Width(constants.Ellipsis)\n\n\tfor i := 0; i < numVisible && i < len(m.filtered); i++ {\n\t\tlabel := m.filtered[i]\n\t\tif len(label) > maxLabelWidth {\n\t\t\tlabel = ansi.Truncate(label, maxLabelWidth-ellipsisWidth, constants.Ellipsis)\n\t\t}\n\n\t\t// Style based on selection\n\t\tif i == m.selected {\n\t\t\t// Selected row - use inverted colors\n\t\t\tb.WriteString(\n\t\t\t\tm.ctx.Styles.Autocomplete.SelectedStyle.Render(\n\t\t\t\t\tconstants.SelectionIcon + \" \" + label,\n\t\t\t\t),\n\t\t\t)\n\t\t} else {\n\t\t\t// Non-selected row\n\t\t\tb.WriteString(\"  \" + label)\n\t\t}\n\n\t\tif i < numVisible-1 {\n\t\t\tb.WriteString(\"\\n\")\n\t\t}\n\t}\n\n\tvar statusView string\n\tswitch m.fetchState {\n\tcase FetchStateLoading:\n\t\tstatusView = m.spinner.View() + m.ctx.Styles.Common.FaintTextStyle.Render(\n\t\t\t\"Fetching suggestions\"+constants.Ellipsis,\n\t\t)\n\tcase FetchStateSuccess:\n\t\tstatusView = m.ctx.Styles.Common.SuccessGlyph + m.ctx.Styles.Common.FaintTextStyle.Render(\n\t\t\t\" Suggestions loaded\",\n\t\t)\n\tcase FetchStateError:\n\t\terrMsg := m.ctx.Styles.Common.FailureGlyph + m.ctx.Styles.Common.FaintTextStyle.Render(\n\t\t\t\" Failed to fetch suggestions\",\n\t\t)\n\t\tif m.fetchError != nil {\n\t\t\terrMsg = m.fetchError.Error()\n\t\t}\n\t\tstatusView = m.ctx.Styles.Common.FailureGlyph + \" \" + errMsg\n\t}\n\n\treturn popupStyle.Render(\n\t\tlipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tb.String(),\n\t\t\tstatusView,\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tRender(m.suggestionHelp.ShortHelpView(suggestionKeys)),\n\t\t),\n\t)\n}\n\nfunc (m *Model) SetFetchLoading() tea.Cmd {\n\tm.fetchState = FetchStateLoading\n\tm.fetchError = nil\n\n\tplaceholders := make([]string, 0, m.maxVisible)\n\tfor i := 0; i < m.maxVisible; i++ {\n\t\tplaceholders = append(placeholders, \"\")\n\t}\n\tm.filtered = placeholders\n\tm.selected = 0\n\n\tm.UpdateVisible()\n\n\treturn m.spinner.Tick\n}\n\nfunc (m *Model) SetFetchSuccess() tea.Cmd {\n\tm.fetchState = FetchStateSuccess\n\tm.fetchError = nil\n\treturn m.clearFetchStatusAfterDelay()\n}\n\nfunc (m *Model) SetFetchError(err error) tea.Cmd {\n\tm.fetchState = FetchStateError\n\tm.fetchError = err\n\treturn m.clearFetchStatusAfterDelay()\n}\n\n// clearFetchStatusAfterDelay returns a command that will send a ClearFetchStatusMsg after 2 seconds\nfunc (m *Model) clearFetchStatusAfterDelay() tea.Cmd {\n\treturn tea.Tick(2*time.Second, func(t time.Time) tea.Msg {\n\t\treturn ClearFetchStatusMsg{}\n\t})\n}\n\nfunc (m *Model) UpdateVisible() {\n\tif m.hiddenByUser {\n\t\tm.visible = false\n\t} else {\n\t\tm.visible = len(m.filtered) > 0\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tswitch msg := msg.(type) {\n\tcase spinner.TickMsg:\n\t\tif m.fetchState == FetchStateLoading {\n\t\t\tvar cmd tea.Cmd\n\t\t\tm.spinner, cmd = m.spinner.Update(msg)\n\t\t\treturn m, cmd\n\t\t}\n\tcase ClearFetchStatusMsg:\n\t\t// Only clear if we're in a success or error state (not loading or already idle)\n\t\tif m.fetchState == FetchStateSuccess || m.fetchState == FetchStateError {\n\t\t\tm.fetchState = FetchStateIdle\n\t\t\tm.fetchError = nil\n\t\t}\n\t}\n\treturn m, nil\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.suggestionHelp.Styles = ctx.Styles.Help.BubbleStyles\n}\n"
  },
  {
    "path": "internal/tui/components/branch/branch.go",
    "content": "package branch\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype Branch struct {\n\tCtx     *context.ProgramContext\n\tPR      *data.PullRequestData\n\tData    git.Branch\n\tColumns []table.Column\n}\n\nfunc (b *Branch) getTextStyle() lipgloss.Style {\n\treturn components.GetIssueTextStyle(b.Ctx)\n}\n\nfunc (b *Branch) renderReviewStatus() string {\n\tif b.PR == nil {\n\t\treturn \"-\"\n\t}\n\treviewCellStyle := b.getTextStyle()\n\tif b.PR.ReviewDecision == \"APPROVED\" {\n\t\treviewCellStyle = reviewCellStyle.Foreground(\n\t\t\tb.Ctx.Theme.SuccessText,\n\t\t)\n\t\treturn reviewCellStyle.Render(\"󰄬\")\n\t}\n\n\tif b.PR.ReviewDecision == \"CHANGES_REQUESTED\" {\n\t\treviewCellStyle = reviewCellStyle.Foreground(\n\t\t\tb.Ctx.Theme.ErrorText,\n\t\t)\n\t\treturn reviewCellStyle.Render(\"\")\n\t}\n\n\treturn reviewCellStyle.Render(b.Ctx.Styles.Common.WaitingGlyph)\n}\n\nfunc (b *Branch) renderState() string {\n\tmergeCellStyle := lipgloss.NewStyle()\n\n\tif b.PR == nil {\n\t\treturn mergeCellStyle.Foreground(b.Ctx.Theme.SuccessText).Render(\"󰜛\")\n\t}\n\n\tswitch b.PR.State {\n\tcase \"OPEN\":\n\t\tif b.PR.IsDraft {\n\t\t\treturn mergeCellStyle.Foreground(b.Ctx.Theme.FaintText).Render(constants.DraftIcon)\n\t\t} else {\n\t\t\treturn mergeCellStyle.Foreground(b.Ctx.Styles.Colors.OpenPR).Render(constants.OpenIcon)\n\t\t}\n\tcase \"CLOSED\":\n\t\treturn mergeCellStyle.Foreground(b.Ctx.Styles.Colors.ClosedPR).\n\t\t\tRender(constants.ClosedIcon)\n\tcase \"MERGED\":\n\t\treturn mergeCellStyle.Foreground(b.Ctx.Styles.Colors.MergedPR).\n\t\t\tRender(constants.MergedIcon)\n\tdefault:\n\t\treturn mergeCellStyle.Foreground(b.Ctx.Theme.FaintText).Render(\"-\")\n\t}\n}\n\nfunc (b *Branch) GetStatusChecksRollup() string {\n\tcommits := b.PR.Commits.Nodes\n\tif len(commits) == 0 {\n\t\treturn \"UNKNOWN\"\n\t}\n\n\treturn string(commits[0].Commit.StatusCheckRollup.State)\n}\n\nfunc (b *Branch) renderCiStatus() string {\n\tif b.PR == nil {\n\t\treturn \"-\"\n\t}\n\n\taccStatus := b.GetStatusChecksRollup()\n\tciCellStyle := b.getTextStyle()\n\tif accStatus == \"SUCCESS\" {\n\t\tciCellStyle = ciCellStyle.Foreground(b.Ctx.Theme.SuccessText)\n\t\treturn ciCellStyle.Render(constants.SuccessIcon)\n\t}\n\n\tif accStatus == \"PENDING\" {\n\t\treturn ciCellStyle.Render(b.Ctx.Styles.Common.WaitingGlyph)\n\t}\n\n\tciCellStyle = ciCellStyle.Foreground(b.Ctx.Theme.ErrorText)\n\treturn ciCellStyle.Render(constants.FailureIcon)\n}\n\nfunc (b *Branch) renderLines(isSelected bool) string {\n\tif b.PR == nil {\n\t\treturn \"-\"\n\t}\n\tdeletions := max(b.PR.Deletions, 0)\n\n\tadditionsFg := b.Ctx.Theme.SuccessText\n\tdeletionsFg := b.Ctx.Theme.ErrorText\n\n\tbaseStyle := lipgloss.NewStyle()\n\tif isSelected {\n\t\tbaseStyle = baseStyle.Background(b.Ctx.Theme.SelectedBackground)\n\t}\n\n\tadditionsText := baseStyle.\n\t\tForeground(additionsFg).\n\t\tRender(fmt.Sprintf(\"+%s\", components.FormatNumber(b.PR.Additions)))\n\tdeletionsText := baseStyle.\n\t\tForeground(deletionsFg).\n\t\tRender(fmt.Sprintf(\"-%s\", components.FormatNumber(deletions)))\n\n\treturn b.getTextStyle().Render(\n\t\tkeepSameSpacesOnAddDeletions(\n\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Left,\n\t\t\t\tadditionsText,\n\t\t\t\tbaseStyle.Render(\" \"),\n\t\t\t\tdeletionsText,\n\t\t\t)),\n\t)\n}\n\nfunc (b *Branch) renderTitle() string {\n\treturn components.RenderIssueTitle(\n\t\tb.Ctx,\n\t\tb.PR.State,\n\t\tb.PR.Title,\n\t\tb.PR.Number,\n\t)\n}\n\nfunc (b *Branch) renderExtendedTitle(isSelected bool) string {\n\tbaseStyle := b.getBaseStyle(isSelected)\n\twidth := b.getMaxWidth()\n\n\ttitle := b.renderLastCommitMsg(isSelected, width)\n\tbranch := b.renderBranch(isSelected, width)\n\treturn baseStyle.Render(lipgloss.JoinVertical(lipgloss.Left, branch, title))\n}\n\nfunc (pr *Branch) renderAuthor() string {\n\treturn pr.getTextStyle().Render(pr.PR.Author.Login)\n}\n\nfunc (b *Branch) renderAssignees() string {\n\tif b.PR == nil {\n\t\treturn \"\"\n\t}\n\tassignees := make([]string, 0, len(b.PR.Assignees.Nodes))\n\tfor _, assignee := range b.PR.Assignees.Nodes {\n\t\tassignees = append(assignees, assignee.Login)\n\t}\n\treturn b.getTextStyle().Render(strings.Join(assignees, \",\"))\n}\n\nfunc (b *Branch) renderRepoName() string {\n\trepoName := \"\"\n\tif !b.Ctx.Config.Theme.Ui.Table.Compact {\n\t\trepoName = b.PR.Repository.NameWithOwner\n\t} else {\n\t\trepoName = b.PR.HeadRepository.Name\n\t}\n\treturn b.getTextStyle().Foreground(b.Ctx.Theme.FaintText).Render(repoName)\n}\n\nfunc (b *Branch) renderUpdateAt() string {\n\ttimeFormat := b.Ctx.Config.Defaults.DateFormat\n\n\tupdatedAtOutput := \"\"\n\tt := b.Data.LastUpdatedAt\n\tif b.PR != nil {\n\t\tt = &b.PR.UpdatedAt\n\t}\n\n\tif t == nil {\n\t\treturn \"\"\n\t}\n\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\tupdatedAtOutput = utils.TimeElapsed(*t)\n\t} else {\n\t\tupdatedAtOutput = t.Format(timeFormat)\n\t}\n\n\treturn b.getTextStyle().Foreground(b.Ctx.Theme.FaintText).Render(updatedAtOutput)\n}\n\nfunc (b *Branch) renderBaseName() string {\n\tif b.PR == nil {\n\t\treturn \"\"\n\t}\n\treturn b.getTextStyle().Render(b.PR.BaseRefName)\n}\n\nfunc (b *Branch) RenderState() string {\n\tswitch b.PR.State {\n\tcase \"OPEN\":\n\t\tif b.PR.IsDraft {\n\t\t\treturn constants.DraftIcon + \" Draft\"\n\t\t} else {\n\t\t\treturn constants.OpenIcon + \" Open\"\n\t\t}\n\tcase \"CLOSED\":\n\t\treturn constants.ClosedIcon + \" Closed\"\n\tcase \"MERGED\":\n\t\treturn constants.MergedIcon + \" Merged\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc (b *Branch) ToTableRow(isSelected bool) table.Row {\n\tif !b.Ctx.Config.Theme.Ui.Table.Compact {\n\t\treturn table.Row{\n\t\t\tb.renderState(),\n\t\t\tb.renderExtendedTitle(isSelected),\n\t\t\tb.renderBaseName(),\n\t\t\tb.renderAssignees(),\n\t\t\tb.renderReviewStatus(),\n\t\t\tb.renderCiStatus(),\n\t\t\tb.renderLines(isSelected),\n\t\t\tb.renderUpdateAt(),\n\t\t}\n\t}\n\n\treturn table.Row{\n\t\tb.renderState(),\n\t\tb.renderRepoName(),\n\t\tb.renderTitle(),\n\t\tb.renderAuthor(),\n\t\tb.renderBaseName(),\n\t\tb.renderAssignees(),\n\t\tb.renderReviewStatus(),\n\t\tb.renderCiStatus(),\n\t\tb.renderLines(isSelected),\n\t\tb.renderUpdateAt(),\n\t}\n}\n\nfunc (b *Branch) renderBranch(isSelected bool, width int) string {\n\tbaseStyle := b.getBaseStyle(isSelected)\n\tname := b.Data.Name\n\tif b.Data.IsCheckedOut {\n\t\tname = baseStyle.Foreground(b.Ctx.Theme.SuccessText).Render(name)\n\t} else {\n\t\tname = baseStyle.Foreground(b.Ctx.Theme.PrimaryText).Render(name)\n\t}\n\treturn baseStyle.MaxHeight(1).Width(width).MaxWidth(width).Render(lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tname,\n\t\tb.renderCommitsAheadBehind(isSelected),\n\t))\n}\n\nfunc (b *Branch) getBaseStyle(isSelected bool) lipgloss.Style {\n\tbaseStyle := lipgloss.NewStyle()\n\tif isSelected {\n\t\tbaseStyle = baseStyle.Background(b.Ctx.Theme.SelectedBackground)\n\t}\n\n\treturn baseStyle\n}\n\nfunc (b *Branch) getMaxWidth() int {\n\tvar titleColumn table.Column\n\tfor _, column := range b.Columns {\n\t\tif column.Grow != nil && *column.Grow {\n\t\t\ttitleColumn = column\n\t\t}\n\t}\n\treturn titleColumn.ComputedWidth - 2\n}\n\nfunc (b *Branch) renderCommitsAheadBehind(isSelected bool) string {\n\tbaseStyle := b.getBaseStyle(isSelected)\n\n\tcommitsAhead := \"\"\n\tcommitsBehind := \"\"\n\tif b.Data.CommitsAhead > 0 {\n\t\tcommitsAhead = baseStyle.Foreground(b.Ctx.Theme.WarningText).Render(\n\t\t\tfmt.Sprintf(\" ↑%d\", b.Data.CommitsAhead))\n\t}\n\tif b.Data.CommitsBehind > 0 {\n\t\tcommitsBehind = baseStyle.Foreground(b.Ctx.Theme.WarningText).Render(\n\t\t\tfmt.Sprintf(\" ↓%d\", b.Data.CommitsBehind))\n\t}\n\n\treturn lipgloss.JoinHorizontal(lipgloss.Top, commitsAhead, commitsBehind)\n}\n\nfunc (b *Branch) renderLastCommitMsg(isSelected bool, width int) string {\n\tbaseStyle := b.getBaseStyle(isSelected)\n\ttitle := \"-\"\n\tif b.Data.LastCommitMsg != nil {\n\t\ttitle = *b.Data.LastCommitMsg\n\t}\n\treturn baseStyle.Foreground(b.Ctx.Theme.SecondaryText).\n\t\tWidth(width).\n\t\tMaxWidth(width).\n\t\tRender(title)\n}\n"
  },
  {
    "path": "internal/tui/components/branch/data.go",
    "content": "package branch\n\nimport (\n\t\"time\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n)\n\ntype BranchData struct {\n\tData git.Branch\n\tPR   *data.PullRequestData\n}\n\nfunc (b BranchData) GetRepoNameWithOwner() string {\n\tif len(b.Data.Remotes) == 0 {\n\t\treturn \"\"\n\t}\n\treturn b.Data.Remotes[0]\n}\n\nfunc (b BranchData) GetTitle() string {\n\treturn b.Data.Name\n}\n\nfunc (b BranchData) GetNumber() int {\n\tif b.PR == nil {\n\t\treturn 0\n\t}\n\treturn b.PR.Number\n}\n\nfunc (b BranchData) GetUrl() string {\n\tif b.PR == nil {\n\t\treturn \"\"\n\t}\n\treturn b.PR.Url\n}\n\nfunc (b BranchData) GetUpdatedAt() time.Time {\n\tif b.Data.LastUpdatedAt == nil {\n\t\treturn time.Time{}\n\t}\n\treturn *b.Data.LastUpdatedAt\n}\n"
  },
  {
    "path": "internal/tui/components/branch/data_test.go",
    "content": "package branch\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n)\n\nfunc TestBranchData_GetRepoNameWithOwner_EmptyRemotes(t *testing.T) {\n\t// This test verifies that GetRepoNameWithOwner returns empty string\n\t// when Remotes slice is empty, instead of panicking with index out of bounds.\n\tb := BranchData{\n\t\tData: git.Branch{\n\t\t\tRemotes: []string{}, // Empty remotes\n\t\t},\n\t}\n\n\tresult := b.GetRepoNameWithOwner()\n\n\trequire.Equal(t, \"\", result, \"should return empty string for empty remotes\")\n}\n\nfunc TestBranchData_GetRepoNameWithOwner_WithRemotes(t *testing.T) {\n\tb := BranchData{\n\t\tData: git.Branch{\n\t\t\tRemotes: []string{\"origin/main\", \"upstream/main\"},\n\t\t},\n\t}\n\n\tresult := b.GetRepoNameWithOwner()\n\n\trequire.Equal(t, \"origin/main\", result, \"should return first remote\")\n}\n\nfunc TestBranchData_GetUpdatedAt_NilLastUpdatedAt(t *testing.T) {\n\t// This test verifies that GetUpdatedAt returns zero time\n\t// when LastUpdatedAt is nil, instead of panicking with nil pointer dereference.\n\tb := BranchData{\n\t\tData: git.Branch{\n\t\t\tLastUpdatedAt: nil, // Nil pointer\n\t\t},\n\t}\n\n\tresult := b.GetUpdatedAt()\n\n\trequire.True(t, result.IsZero(), \"should return zero time for nil LastUpdatedAt\")\n}\n\nfunc TestBranchData_GetUpdatedAt_WithValue(t *testing.T) {\n\tnow := time.Now()\n\tb := BranchData{\n\t\tData: git.Branch{\n\t\t\tLastUpdatedAt: &now,\n\t\t},\n\t}\n\n\tresult := b.GetUpdatedAt()\n\n\trequire.Equal(t, now, result, \"should return the actual time\")\n}\n"
  },
  {
    "path": "internal/tui/components/branch/utils.go",
    "content": "package branch\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nfunc keepSameSpacesOnAddDeletions(str string) string {\n\tstrAsList := strings.Split(str, \" \")\n\treturn fmt.Sprintf(\n\t\t\"%7s\",\n\t\tstrAsList[0],\n\t) + \" \" + fmt.Sprintf(\n\t\t\"%7s\",\n\t\tstrAsList[1],\n\t)\n}\n"
  },
  {
    "path": "internal/tui/components/branchsidebar/branchsidebar.go",
    "content": "package branchsidebar\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\tgitm \"github.com/aymanbagabas/git-module\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branch\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx    *context.ProgramContext\n\tbranch *branch.BranchData\n\tstatus *gitm.NameStatus\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\treturn Model{\n\t\tbranch: nil,\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tswitch msg := msg.(type) {\n\tcase updateBranchStatusMsg:\n\t\tm.status = &msg.status\n\t\treturn m, nil\n\t}\n\treturn m, nil\n}\n\nfunc (m Model) View() string {\n\ts := strings.Builder{}\n\n\ts.WriteString(lipgloss.NewStyle().Bold(true).Render(\"STATUS\\n\"))\n\tif m.status == nil {\n\t\ts.WriteString(\"\\nLoading...\")\n\t} else {\n\t\tif len(m.status.Added) == 0 && len(m.status.Removed) == 0 && len(m.status.Modified) == 0 {\n\t\t\ts.WriteString(\"\\nNo changes\")\n\t\t}\n\n\t\tfor _, file := range m.status.Added {\n\t\t\tfmt.Fprintf(&s, \"\\nA %s\", file)\n\t\t}\n\t\tfor _, file := range m.status.Removed {\n\t\t\tfmt.Fprintf(&s, \"\\nD %s\", file)\n\t\t}\n\t\tfor _, file := range m.status.Modified {\n\t\t\tfmt.Fprintf(&s, \"\\nM %s\", file)\n\t\t}\n\t}\n\n\ts.WriteString(\"\\n\\n\")\n\ts.WriteString(lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintBorder).Render(\n\t\tstrings.Repeat(lipgloss.NormalBorder().Bottom, max(m.ctx.DynamicPreviewWidth-5, 0))),\n\t)\n\ts.WriteString(\"\\n\\n\")\n\n\tif m.branch == nil {\n\t\treturn \"No branch selected\"\n\t}\n\n\ts.WriteString(m.branch.Data.Name)\n\tif m.branch.PR != nil {\n\t\ts.WriteString(\"\\n\")\n\t\tfmt.Fprintf(&s, \"#%d %s\", m.branch.PR.GetNumber(), m.branch.PR.Title)\n\t}\n\n\treturn s.String()\n}\n\ntype updateBranchStatusMsg struct {\n\tstatus gitm.NameStatus\n}\n\nfunc (m *Model) SetRow(b *branch.BranchData) tea.Cmd {\n\tm.branch = b\n\treturn m.refreshBranchStatusCmd\n}\n\nfunc (m *Model) refreshBranchStatusCmd() tea.Msg {\n\tstatus, err := git.GetStatus(m.ctx.RepoPath)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn updateBranchStatusMsg{\n\t\tstatus: status,\n\t}\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n}\n"
  },
  {
    "path": "internal/tui/components/branchsidebar/branchsidebar_test.go",
    "content": "package branchsidebar\n\nimport (\n\t\"testing\"\n\n\tgitm \"github.com/aymanbagabas/git-module\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branch\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\nfunc testCtx() *context.ProgramContext {\n\treturn &context.ProgramContext{\n\t\tTheme:               *theme.DefaultTheme,\n\t\tDynamicPreviewWidth: 20,\n\t}\n}\n\nfunc TestView_NoBranch(t *testing.T) {\n\tm := NewModel(testCtx())\n\tm.ctx = testCtx()\n\tm.status = &gitm.NameStatus{}\n\n\tgot := m.View()\n\trequire.Equal(t, \"No branch selected\", got)\n}\n\nfunc TestView_StatusLoading(t *testing.T) {\n\tm := NewModel(testCtx())\n\tm.ctx = testCtx()\n\tm.branch = &branch.BranchData{Data: git.Branch{Name: \"main\"}}\n\n\tgot := m.View()\n\trequire.Contains(t, got, \"Loading...\")\n\trequire.Contains(t, got, \"main\")\n}\n\nfunc TestView_NoChanges(t *testing.T) {\n\tm := NewModel(testCtx())\n\tm.ctx = testCtx()\n\tm.branch = &branch.BranchData{Data: git.Branch{Name: \"main\"}}\n\tm.status = &gitm.NameStatus{}\n\n\tgot := m.View()\n\trequire.Contains(t, got, \"No changes\")\n\trequire.Contains(t, got, \"main\")\n}\n\nfunc TestView_WithFileChanges(t *testing.T) {\n\tm := NewModel(testCtx())\n\tm.ctx = testCtx()\n\tm.branch = &branch.BranchData{Data: git.Branch{Name: \"feature\"}}\n\tm.status = &gitm.NameStatus{\n\t\tAdded:    []string{\"new.go\"},\n\t\tRemoved:  []string{\"old.go\"},\n\t\tModified: []string{\"changed.go\"},\n\t}\n\n\tgot := m.View()\n\trequire.Contains(t, got, \"A new.go\")\n\trequire.Contains(t, got, \"D old.go\")\n\trequire.Contains(t, got, \"M changed.go\")\n\trequire.Contains(t, got, \"feature\")\n}\n\nfunc TestView_WithPR(t *testing.T) {\n\tm := NewModel(testCtx())\n\tm.ctx = testCtx()\n\tm.branch = &branch.BranchData{\n\t\tData: git.Branch{Name: \"feature\"},\n\t\tPR:   &data.PullRequestData{Number: 42, Title: \"Add feature\"},\n\t}\n\tm.status = &gitm.NameStatus{}\n\n\tgot := m.View()\n\trequire.Contains(t, got, \"#42 Add feature\")\n\trequire.Contains(t, got, \"feature\")\n}\n"
  },
  {
    "path": "internal/tui/components/carousel/carousel.go",
    "content": "package carousel\n\nimport (\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"github.com/charmbracelet/x/ansi\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n)\n\n// Model defines a state for the carousel widget.\ntype Model struct {\n\tKeyMap KeyMap\n\n\titems                  []string\n\tcursor                 int\n\twidth                  int\n\theight                 int\n\tfocus                  bool\n\tshowOverflowIndicators bool\n\tleftOverflowIndicator  string\n\trightOverflowIndicator string\n\tshowSeparators         bool\n\tseparator              string\n\tstyles                 Styles\n\n\tcontent string\n\tstart   int\n\tend     int\n}\n\n// KeyMap defines keybindings. It satisfies to the help.KeyMap interface, which\n// is used to render the menu.\ntype KeyMap struct {\n\tSelectLeft  key.Binding\n\tSelectRight key.Binding\n}\n\n// DefaultKeyMap returns a default set of keybindings.\nfunc DefaultKeyMap() KeyMap {\n\treturn KeyMap{\n\t\tSelectLeft: key.NewBinding(\n\t\t\tkey.WithKeys(\"left\", \"h\"),\n\t\t\tkey.WithHelp(\"←/h\", \"h\"),\n\t\t),\n\t\tSelectRight: key.NewBinding(\n\t\t\tkey.WithKeys(\"right\", \"l\"),\n\t\t\tkey.WithHelp(\"→/l\", \"right\"),\n\t\t),\n\t}\n}\n\n// Styles contains style definitions for this carousel component. By default,\n// these values are generated by DefaultStyles.\ntype Styles struct {\n\tItem              lipgloss.Style\n\tSelected          lipgloss.Style\n\tOverflowIndicator lipgloss.Style\n\tSeparator         lipgloss.Style\n}\n\n// DefaultStyles returns a set of default style definitions for this carousel.\nfunc DefaultStyles() Styles {\n\treturn Styles{\n\t\tItem: lipgloss.NewStyle().Padding(0, 1),\n\t\tSelected: lipgloss.NewStyle().\n\t\t\tPadding(0, 1).\n\t\t\tForeground(lipgloss.Color(\"212\")),\n\t}\n}\n\n// SetStyles sets the table styles.\nfunc (m *Model) SetStyles(s Styles) {\n\tm.styles = s\n\tm.UpdateSize()\n}\n\n// Option is used to set options in New. For example:\n//\n//\tcarousel := New(WithItems([]string{\"Item 1\", \"Item 2\", \"Item 3\"}))\ntype Option func(*Model)\n\n// New creates a new model for the carousel widget.\nfunc New(opts ...Option) Model {\n\tm := Model{\n\t\tcursor: 0,\n\n\t\tKeyMap:                 DefaultKeyMap(),\n\t\tstyles:                 DefaultStyles(),\n\t\tleftOverflowIndicator:  \"<\",\n\t\trightOverflowIndicator: \">\",\n\t\tseparator:              \"|\",\n\t}\n\n\tfor _, opt := range opts {\n\t\topt(&m)\n\t}\n\n\tm.UpdateSize()\n\n\treturn m\n}\n\n// WithItems sets the carousel items (data).\nfunc WithItems(items []string) Option {\n\treturn func(m *Model) {\n\t\tm.SetItems(items)\n\t}\n}\n\n// WithHeight sets the height of the carousel.\nfunc WithHeight(h int) Option {\n\treturn func(m *Model) {\n\t\tm.height = h\n\t}\n}\n\n// WithWidth sets the width of the carousel.\nfunc WithWidth(w int) Option {\n\treturn func(m *Model) {\n\t\tm.width = w\n\t}\n}\n\n// WithOverflowIndicators sets indicators that show up when the carousel items\n// don't fit in the given width\nfunc WithOverflowIndicators(indicators ...string) Option {\n\treturn func(m *Model) {\n\t\tm.showOverflowIndicators = true\n\t\tif len(indicators) > 0 {\n\t\t\tm.leftOverflowIndicator = indicators[0]\n\t\t}\n\t\tif len(indicators) > 1 {\n\t\t\tm.rightOverflowIndicator = indicators[1]\n\t\t}\n\t}\n}\n\n// WithWidth sets the width of the carousel.\nfunc WithSeparators(sep ...string) Option {\n\treturn func(m *Model) {\n\t\tm.showSeparators = true\n\t\tif len(sep) > 0 {\n\t\t\tm.separator = sep[0]\n\t\t}\n\t}\n}\n\n// WithFocused sets the focus state of the carousel.\nfunc WithFocused(f bool) Option {\n\treturn func(m *Model) {\n\t\tm.focus = f\n\t}\n}\n\n// WithStyles sets the carousel styles.\nfunc WithStyles(s Styles) Option {\n\treturn func(m *Model) {\n\t\tm.styles = s\n\t}\n}\n\n// WithKeyMap sets the key map.\nfunc WithKeyMap(km KeyMap) Option {\n\treturn func(m *Model) {\n\t\tm.KeyMap = km\n\t}\n}\n\n// Update is the Bubble Tea update loop.\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tif !m.focus {\n\t\treturn m, nil\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tswitch {\n\t\tcase key.Matches(msg, m.KeyMap.SelectLeft):\n\t\t\tm.MoveLeft()\n\t\tcase key.Matches(msg, m.KeyMap.SelectRight):\n\t\t\tm.MoveRight()\n\t\t}\n\t}\n\n\treturn m, nil\n}\n\n// Focused returns the focus state of the carousel.\nfunc (m Model) Focused() bool {\n\treturn m.focus\n}\n\n// Focus focuses the carousel, allowing the user to move around the items and\n// interact.\nfunc (m *Model) Focus() {\n\tm.focus = true\n\tm.UpdateSize()\n}\n\n// Blur blurs the carousel, preventing selection or movement.\nfunc (m *Model) Blur() {\n\tm.focus = false\n\tm.UpdateSize()\n}\n\n// View renders the component.\nfunc (m Model) View() string {\n\t// d := lipgloss.JoinHorizontal(lipgloss.Center, m.content, fmt.Sprintf(\"cursor=%d\", m.cursor))\n\t// return d\n\treturn m.content\n}\n\n// UpdateSize updates the carousel size based on the previously defined\n// items and width.\nfunc (m *Model) UpdateSize() {\n\tleftover := m.width\n\titemsContent := \"\"\n\n\tcurrDirection := -1\n\tleft := m.cursor\n\tlastLeft := left\n\tright := min(m.cursor+1, len(m.items))\n\tlastRight := right\n\tfor len(m.items) > 0 && leftover > 0 && (left >= 0 || right < len(m.items)) {\n\t\tif currDirection < 0 && left >= 0 {\n\t\t\tlItem := m.renderItem(left, leftover)\n\t\t\tleftover -= lipgloss.Width(lItem)\n\t\t\titemsContent = lipgloss.JoinHorizontal(lipgloss.Top, lItem, itemsContent)\n\t\t\tlastLeft = left\n\t\t\tleft--\n\t\t} else if currDirection > 0 && right < len(m.items) {\n\t\t\trItem := m.renderItem(right, leftover)\n\t\t\tleftover -= lipgloss.Width(rItem)\n\t\t\titemsContent = lipgloss.JoinHorizontal(lipgloss.Top, itemsContent, rItem)\n\t\t\tlastRight = right\n\t\t\tright++\n\t\t}\n\n\t\tif left < 0 {\n\t\t\tcurrDirection = 1\n\t\t} else if right > len(m.items)-1 {\n\t\t\tcurrDirection = -1\n\t\t} else {\n\t\t\tcurrDirection = currDirection * -1\n\t\t}\n\t}\n\tlastRight = min(lastRight, len(m.items)-1)\n\n\tm.start = lastLeft\n\tm.end = lastRight\n\n\tl := m.width\n\tloIndicator, roIndicator := \"\", \"\"\n\n\tif m.showOverflowIndicators && lastLeft != 0 {\n\t\tloIndicator = m.styles.OverflowIndicator.Render(m.leftOverflowIndicator)\n\t\tl -= lipgloss.Width(loIndicator)\n\t}\n\tif m.showOverflowIndicators && lastRight != len(m.items)-1 {\n\t\troIndicator = m.styles.OverflowIndicator.Render(m.rightOverflowIndicator)\n\t\tl -= lipgloss.Width(roIndicator)\n\t}\n\n\tif loIndicator != \"\" {\n\t\ttruncate := lipgloss.Width(itemsContent) - l + 1\n\t\titemsContent = ansi.TruncateLeft(itemsContent, truncate, \"\")\n\t\tif truncate > 0 {\n\t\t\titemsContent = lipgloss.JoinHorizontal(lipgloss.Center,\n\t\t\t\tm.styles.Item.Inline(true).Render(constants.Ellipsis), itemsContent)\n\t\t}\n\t} else {\n\t\tw := lipgloss.Width(itemsContent)\n\t\tif w > l {\n\t\t\titemsContent = ansi.Truncate(itemsContent, l, \"\")\n\t\t\titemsContent = lipgloss.JoinHorizontal(lipgloss.Center, itemsContent,\n\t\t\t\tm.styles.Item.Inline(true).Render(constants.Ellipsis))\n\t\t}\n\t}\n\n\tm.content = lipgloss.NewStyle().Height(m.height).Render(\n\t\tlipgloss.JoinHorizontal(lipgloss.Center, loIndicator, itemsContent, roIndicator))\n}\n\n// SelectedItem returns the selected item.\nfunc (m Model) SelectedItem() string {\n\treturn m.items[m.cursor]\n}\n\n// Items returns the current items.\nfunc (m Model) Items() []string {\n\treturn m.items\n}\n\n// SetItems sets a new items state.\nfunc (m *Model) SetItems(items []string) {\n\tm.items = items\n\tm.cursor = clamp(m.cursor, 0, len(m.items)-1)\n\tm.start = 0\n\tm.UpdateSize()\n}\n\n// SetWidth sets the width of the carousel.\nfunc (m *Model) SetWidth(w int) {\n\tm.width = w\n\tm.UpdateSize()\n}\n\n// SetHeight sets the height of the carousel.\nfunc (m *Model) SetHeight(h int) {\n\tm.height = h\n\tm.UpdateSize()\n}\n\n// Height returns the height of the carousel.\nfunc (m Model) Height() int {\n\treturn m.height\n}\n\n// Width returns the width of the carousel.\nfunc (m Model) Width() int {\n\treturn m.width\n}\n\n// Cursor returns the index of the selected row.\nfunc (m Model) Cursor() int {\n\treturn m.cursor\n}\n\n// HasRightItems returns true if there's items left on the right.\nfunc (m Model) HasRightItems() bool {\n\treturn m.end < len(m.items)\n}\n\n// HasLeftItems returns true if there's items left on the left.\nfunc (m Model) HasLeftItems() bool {\n\treturn m.start > 0\n}\n\n// SetCursor sets the cursor position in the carousel.\nfunc (m *Model) SetCursor(n int) {\n\tm.cursor = clamp(n, 0, len(m.items)-1)\n\tm.UpdateSize()\n}\n\n// MoveLeft moves the selection left by one item..\n// It can not go before the first item.\nfunc (m *Model) MoveLeft() {\n\tm.cursor = clamp(m.cursor-1, 0, len(m.items)-1)\n\tm.UpdateSize()\n}\n\n// MoveDown moves the selection right by one item.\n// It can not go after the last row.\nfunc (m *Model) MoveRight() {\n\tm.cursor = clamp(m.cursor+1, 0, len(m.items)-1)\n\tm.UpdateSize()\n}\n\nfunc (m *Model) renderItem(itemID int, maxWidth int) string {\n\tvar item string\n\tif itemID == m.cursor {\n\t\titem = m.styles.Selected.Render(m.items[itemID])\n\t} else if itemID < m.cursor {\n\t\tr := m.styles.Item.Render(m.items[itemID])\n\t\ttruncate := lipgloss.Width(r) - maxWidth - 1\n\t\titem = ansi.TruncateLeft(r, truncate, \"\")\n\t\tif truncate > 0 {\n\t\t\titem = lipgloss.JoinHorizontal(lipgloss.Center,\n\t\t\t\tm.styles.Item.Inline(true).Render(constants.Ellipsis), item)\n\t\t}\n\t} else {\n\t\tr := m.styles.Item.Render(m.items[itemID])\n\t\titem = ansi.Truncate(r, maxWidth, m.styles.Item.Inline(true).Render(constants.Ellipsis))\n\t}\n\n\tif m.showSeparators && itemID != len(m.items)-1 {\n\t\treturn lipgloss.JoinHorizontal(\n\t\t\tlipgloss.Center,\n\t\t\titem,\n\t\t\tm.styles.Separator.Render(m.separator),\n\t\t)\n\t}\n\n\treturn item\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\n\treturn b\n}\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\n\treturn b\n}\n\nfunc clamp(v, low, high int) int {\n\treturn min(max(v, low), high)\n}\n"
  },
  {
    "path": "internal/tui/components/common/interface.go",
    "content": "package common\n\nimport tea \"charm.land/bubbletea/v2\"\n\n// Model represents a common interface for UI components.\ntype Model[T any] interface {\n\tUpdate(msg tea.Msg) (T, tea.Cmd)\n\tView() string\n}\n"
  },
  {
    "path": "internal/tui/components/footer/footer.go",
    "content": "package footer\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\n\tbbHelp \"charm.land/bubbles/v2/help\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\tzone \"github.com/lrstanley/bubblezone/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nconst viewSeparator = \" │ \"\n\ntype Model struct {\n\tctx             *context.ProgramContext\n\tleftSection     *string\n\trightSection    *string\n\thelp            bbHelp.Model\n\tShowAll         bool\n\tShowConfirmQuit bool\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\thelp := bbHelp.New()\n\thelp.ShowAll = true\n\thelp.Styles = ctx.Styles.Help.BubbleStyles\n\tl := \"\"\n\tr := \"\"\n\treturn Model{\n\t\tctx:          ctx,\n\t\thelp:         help,\n\t\tleftSection:  &l,\n\t\trightSection: &r,\n\t}\n}\n\nfunc (m Model) View() string {\n\tvar footer string\n\n\tif m.ShowConfirmQuit {\n\t\tfooter = lipgloss.NewStyle().\n\t\t\tRender(\"Really quit? (Press y/enter to confirm, any other key to cancel)\")\n\t} else {\n\t\thelpIndicator := lipgloss.NewStyle().\n\t\t\tBackground(m.ctx.Theme.FaintText).\n\t\t\tForeground(m.ctx.Theme.SelectedBackground).\n\t\t\tPadding(0, 1).\n\t\t\tRender(\"? help\")\n\t\tdonationIndicator := zone.Mark(\"donate\", lipgloss.NewStyle().\n\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\tForeground(m.ctx.Theme.WarningText).\n\t\t\tPadding(0, 1).\n\t\t\tUnderline(true).\n\t\t\tRender(fmt.Sprintf(\"%s donate\", constants.DonateIcon)))\n\t\tviewSwitcher := m.renderViewSwitcher(m.ctx)\n\t\tleftSection := \"\"\n\t\tif m.leftSection != nil {\n\t\t\tleftSection = *m.leftSection\n\t\t}\n\t\trightSection := \"\"\n\t\tif m.rightSection != nil {\n\t\t\trightSection = *m.rightSection\n\t\t}\n\t\tspacing := lipgloss.NewStyle().\n\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\tRender(\n\t\t\t\tstrings.Repeat(\n\t\t\t\t\t\" \",\n\t\t\t\t\tutils.Max(0,\n\t\t\t\t\t\tm.ctx.ScreenWidth-lipgloss.Width(\n\t\t\t\t\t\t\tviewSwitcher,\n\t\t\t\t\t\t)-lipgloss.Width(leftSection)-\n\t\t\t\t\t\t\tlipgloss.Width(rightSection)-\n\t\t\t\t\t\t\tlipgloss.Width(\n\t\t\t\t\t\t\t\thelpIndicator,\n\t\t\t\t\t\t\t)-lipgloss.Width(donationIndicator),\n\t\t\t\t\t)))\n\n\t\tfooter = m.ctx.Styles.Common.FooterStyle.\n\t\t\tRender(lipgloss.JoinHorizontal(lipgloss.Top, viewSwitcher, leftSection, spacing,\n\t\t\t\trightSection, donationIndicator, helpIndicator))\n\t}\n\n\tif m.ShowAll {\n\t\tkeymap := keys.CreateKeyMapForView(m.ctx.View)\n\t\tfullHelp := m.help.View(keymap)\n\t\treturn lipgloss.JoinVertical(lipgloss.Top, footer, fullHelp)\n\t}\n\n\treturn footer\n}\n\nfunc (m *Model) SetShowConfirmQuit(val bool) {\n\tm.ShowConfirmQuit = val\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.help.SetWidth(width)\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.help.Styles = ctx.Styles.Help.BubbleStyles\n}\n\nfunc (m *Model) renderViewButton(view config.ViewType) string {\n\tisActive := m.ctx.View == view\n\n\t// Define icons and labels for each view\n\tvar icon, label string\n\t// Define icons - notifications has solid/outline variants\n\tsolidBell := \"\"\n\toutlineBell := \"\"\n\n\tswitch view {\n\tcase config.NotificationsView:\n\t\tif m.ctx.View == config.NotificationsView {\n\t\t\ticon = solidBell\n\t\t} else {\n\t\t\ticon = outlineBell\n\t\t}\n\t\tlabel = \"\"\n\tcase config.PRsView:\n\t\ticon = \"\"\n\t\tlabel = \" PRs\"\n\tcase config.IssuesView:\n\t\ticon = \"\"\n\t\tlabel = \" Issues\"\n\t}\n\n\tif isActive {\n\t\t// Active: colored icon + prominent background\n\t\t// Use gold for notifications bell, green for others\n\t\ticonColor := m.ctx.Theme.SuccessText\n\t\tif view == config.NotificationsView {\n\t\t\ticonColor = compat.AdaptiveColor{\n\t\t\t\tLight: lipgloss.Color(\"#B8860B\"),\n\t\t\t\tDark:  lipgloss.Color(\"#FFD700\"),\n\t\t\t} // Gold\n\t\t}\n\t\tactiveStyle := lipgloss.NewStyle().\n\t\t\tForeground(iconColor).\n\t\t\tBackground(m.ctx.Styles.ViewSwitcher.ActiveView.GetBackground()).\n\t\t\tBold(true)\n\t\tif label != \"\" {\n\t\t\treturn activeStyle.Render(icon) + activeStyle.Render(label)\n\t\t}\n\t\treturn activeStyle.Render(icon)\n\t}\n\n\t// Inactive: faint styling\n\treturn m.ctx.Styles.ViewSwitcher.InactiveView.Render(icon + label)\n}\n\nfunc (m *Model) renderViewSwitcher(ctx *context.ProgramContext) string {\n\tvar repo string\n\tif m.ctx.RepoPath != \"\" {\n\t\tname := path.Base(m.ctx.RepoPath)\n\t\tif m.ctx.RepoUrl != \"\" {\n\t\t\tname = git.GetRepoShortName(m.ctx.RepoUrl)\n\t\t}\n\t\trepo = ctx.Styles.Common.FooterStyle.Render(fmt.Sprintf(\" %s\", name))\n\t}\n\n\tvar user string\n\tif ctx.User != \"\" {\n\t\tuser = ctx.Styles.Common.FooterStyle.Render(\"@\" + ctx.User)\n\t}\n\n\tview := lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tctx.Styles.ViewSwitcher.ViewsSeparator.PaddingLeft(1).\n\t\t\tRender(m.renderViewButton(config.NotificationsView)),\n\t\tctx.Styles.ViewSwitcher.ViewsSeparator.Render(viewSeparator),\n\t\tm.renderViewButton(config.PRsView),\n\t\tctx.Styles.ViewSwitcher.ViewsSeparator.Render(viewSeparator),\n\t\tm.renderViewButton(config.IssuesView),\n\t\tlipgloss.NewStyle().Background(ctx.Styles.Common.FooterStyle.GetBackground()).Foreground(\n\t\t\tctx.Styles.ViewSwitcher.ViewsSeparator.GetBackground()).Render(\" \"),\n\t\trepo,\n\t\tctx.Styles.Common.FooterStyle.Foreground(m.ctx.Theme.FaintText).Render(\" • \"),\n\t\tuser,\n\t\tctx.Styles.Common.FooterStyle.Foreground(m.ctx.Theme.FaintBorder).Render(\" │\"),\n\t)\n\n\treturn ctx.Styles.ViewSwitcher.Root.Render(view)\n}\n\nfunc (m *Model) SetLeftSection(leftSection string) {\n\t*m.leftSection = leftSection\n}\n\nfunc (m *Model) SetRightSection(rightSection string) {\n\t*m.rightSection = rightSection\n}\n"
  },
  {
    "path": "internal/tui/components/inputbox/inputbox.go",
    "content": "package inputbox\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/help\"\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/textarea\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/autocomplete\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx          *context.ProgramContext\n\ttextArea     textarea.Model\n\tinputHelp    help.Model\n\tprompt       string\n\tautocomplete *autocomplete.Model\n\n\t// OnSuggestionSelected is called when a user selects an autocomplete suggestion.\n\t// It receives the selected suggestion, current cursor position, and current value in inputbox.\n\t// It should return the new value for the inputbox and new cursor position after insertion.\n\tOnSuggestionSelected func(selected string, cursorPos int, currentValue string) (newValue string, newCursorPos int)\n\n\t// CurrentContext extracts the \"current context\" (e.g., partial label being typed)\n\t// at the given cursor position, used for filtering autocomplete suggestions.\n\tCurrentContext func(cursorPos int, currentValue string) string\n\n\t// SuggestionsToExclude parses the current value in the inputbox and returns all complete items,\n\t// used to exclude already-entered items from autocomplete suggestions.\n\tSuggestionsToExclude func(currentValue string) []string\n}\n\nvar inputKeys = []key.Binding{\n\tkey.NewBinding(key.WithKeys(\"ctrl+d\"), key.WithHelp(\"Ctrl+d\", \"submit\")),\n\tkey.NewBinding(key.WithKeys(\"ctrl+c\", \"esc\"), key.WithHelp(\"Ctrl+c/esc\", \"cancel\")),\n\tautocomplete.ToggleSuggestions,\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tta := textarea.New()\n\tta.ShowLineNumbers = true\n\tta.Prompt = \"\"\n\tta.CharLimit = 65536\n\tbase := lipgloss.NewStyle()\n\tta.SetStyles(textarea.Styles{\n\t\tFocused: textarea.StyleState{\n\t\t\tBase:       base,\n\t\t\tText:       base.Foreground(ctx.Theme.PrimaryText),\n\t\t\tLineNumber: base.Foreground(ctx.Theme.FaintText),\n\t\t\tCursorLine: base.Background(ctx.Theme.FaintBorder).\n\t\t\t\tForeground(ctx.Theme.PrimaryText),\n\t\t\tCursorLineNumber: base.Foreground(ctx.Theme.SecondaryText),\n\t\t\tPlaceholder:      base.Foreground(ctx.Theme.FaintText),\n\t\t\tEndOfBuffer:      base.Foreground(ctx.Theme.FaintText),\n\t\t},\n\t})\n\tta.Focus()\n\n\th := help.New()\n\th.Styles = ctx.Styles.Help.BubbleStyles\n\treturn Model{\n\t\tctx:       ctx,\n\t\ttextArea:  ta,\n\t\tinputHelp: h,\n\t\tprompt:    \"\",\n\t}\n}\n\nfunc (m *Model) SetAutocomplete(ac *autocomplete.Model) {\n\tm.autocomplete = ac\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tvar cmd tea.Cmd\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\t// Allow toggling suggestions at any time\n\t\tif m.autocomplete != nil && key.Matches(msg, autocomplete.ToggleSuggestions) {\n\t\t\tif m.autocomplete.IsVisible() {\n\t\t\t\tm.autocomplete.Suppress()\n\t\t\t\treturn m, nil\n\t\t\t}\n\n\t\t\tm.autocomplete.Unsuppress()\n\t\t\tcurrentValue := m.textArea.Value()\n\t\t\tcursorPos := m.GetCursorPosition()\n\t\t\tvar currentLabel string\n\t\t\tvar existingLabels []string\n\t\t\tif m.CurrentContext != nil {\n\t\t\t\tcurrentLabel = m.CurrentContext(cursorPos, currentValue)\n\t\t\t}\n\t\t\tif m.SuggestionsToExclude != nil {\n\t\t\t\texistingLabels = m.SuggestionsToExclude(currentValue)\n\t\t\t}\n\t\t\tm.autocomplete.Show(currentLabel, existingLabels)\n\t\t\treturn m, nil\n\t\t}\n\n\t\t// Allow navigation/selection even if the popup is hidden (as long as there are filtered results)\n\t\tif m.autocomplete != nil &&\n\t\t\t(m.autocomplete.IsVisible() || m.autocomplete.HasSuggestions()) {\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, autocomplete.PrevKey):\n\t\t\t\tm.autocomplete.Prev()\n\t\t\t\treturn m, nil\n\t\t\tcase key.Matches(msg, autocomplete.NextKey):\n\t\t\t\tm.autocomplete.Next()\n\t\t\t\treturn m, nil\n\t\t\tcase key.Matches(msg, autocomplete.SelectKey):\n\t\t\t\tselected := m.autocomplete.Selected()\n\t\t\t\tif selected != \"\" && m.OnSuggestionSelected != nil {\n\t\t\t\t\tcurrentValue := m.textArea.Value()\n\t\t\t\t\tcursorPos := m.GetCursorPosition()\n\t\t\t\t\tnewValue, newCursorPos := m.OnSuggestionSelected(\n\t\t\t\t\t\tselected,\n\t\t\t\t\t\tcursorPos,\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t)\n\t\t\t\t\tm.textArea.SetValue(newValue)\n\t\t\t\t\tm.textArea.SetCursorColumn(newCursorPos)\n\t\t\t\t}\n\t\t\t\tm.autocomplete.Hide()\n\t\t\t\treturn m, nil\n\t\t\t}\n\t\t}\n\t}\n\n\tm.textArea, cmd = m.textArea.Update(msg)\n\treturn m, cmd\n}\n\nfunc (m Model) View() string {\n\treturn lipgloss.NewStyle().\n\t\tBorderTop(true).\n\t\tBorderStyle(lipgloss.NormalBorder()).\n\t\tBorderForeground(m.ctx.Theme.SecondaryBorder).\n\t\tMarginTop(1).\n\t\tRender(\n\t\t\tlipgloss.JoinVertical(\n\t\t\t\tlipgloss.Left,\n\t\t\t\tfmt.Sprintf(\"%s\\n\", m.prompt),\n\t\t\t\tm.textArea.View(),\n\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\tMarginTop(1).\n\t\t\t\t\tRender(m.inputHelp.ShortHelpView(inputKeys)),\n\t\t\t),\n\t\t)\n}\n\nfunc (m Model) ViewWithAutocomplete() string {\n\tautocompleteView := \"\"\n\tif m.autocomplete != nil {\n\t\tautocompleteView = m.autocomplete.View()\n\t}\n\n\treturn lipgloss.NewStyle().\n\t\tBorderTop(true).\n\t\tBorderStyle(lipgloss.NormalBorder()).\n\t\tBorderForeground(m.ctx.Theme.SecondaryBorder).\n\t\tMarginTop(1).\n\t\tRender(\n\t\t\tlipgloss.JoinVertical(\n\t\t\t\tlipgloss.Left,\n\t\t\t\tfmt.Sprintf(\"%s\\n\", m.prompt),\n\t\t\t\tm.textArea.View(),\n\t\t\t\tautocompleteView,\n\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\tMarginTop(1).\n\t\t\t\t\tRender(m.inputHelp.ShortHelpView(inputKeys)),\n\t\t\t),\n\t\t)\n}\n\nfunc (m *Model) Value() string {\n\treturn m.textArea.Value()\n}\n\nfunc (m *Model) SetValue(s string) {\n\tm.textArea.SetValue(s)\n}\n\nfunc (m *Model) Blur() {\n\tm.textArea.Blur()\n}\n\nfunc (m *Model) Focus() tea.Cmd {\n\treturn m.textArea.Focus()\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.textArea.SetWidth(width)\n}\n\nfunc (m *Model) SetHeight(height int) {\n\tm.textArea.SetHeight(height)\n}\n\nfunc (m *Model) SetPrompt(prompt string) {\n\tm.prompt = prompt\n}\n\nfunc (m *Model) Reset() {\n\tm.textArea.Reset()\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.inputHelp.Styles = ctx.Styles.Help.BubbleStyles\n}\n\n// GetCursorPosition returns the cursor position within the current logical line\n// in runes. This correctly handles multi-byte Unicode characters since the\n// textarea internally uses rune-based positioning via [][]rune.\n//\n// Use this for single-line input contexts like comma-separated labels.\n// For multi-line contexts (e.g., @mentions in comments), use GetAbsoluteCursorPosition.\nfunc (m *Model) GetCursorPosition() int {\n\tlineInfo := m.textArea.LineInfo()\n\treturn lineInfo.StartColumn + lineInfo.ColumnOffset\n}\n"
  },
  {
    "path": "internal/tui/components/issuerow/issuerow.go",
    "content": "package issuerow\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype Issue struct {\n\tCtx            *context.ProgramContext\n\tData           data.IssueData\n\tShowAuthorIcon bool\n}\n\nfunc (issue *Issue) ToTableRow() table.Row {\n\treturn table.Row{\n\t\tissue.renderStatus(),\n\t\tissue.renderRepoName(),\n\t\tissue.renderTitle(),\n\t\tissue.renderOpenedBy(),\n\t\tissue.renderAssignees(),\n\t\tissue.renderNumComments(),\n\t\tissue.renderNumReactions(),\n\t\tissue.renderUpdateAt(),\n\t\tissue.renderCreatedAt(),\n\t}\n}\n\nfunc (issue *Issue) getTextStyle() lipgloss.Style {\n\treturn components.GetIssueTextStyle(issue.Ctx)\n}\n\nfunc (issue *Issue) renderUpdateAt() string {\n\ttimeFormat := issue.Ctx.Config.Defaults.DateFormat\n\n\tupdatedAtOutput := \"\"\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\tupdatedAtOutput = utils.TimeElapsed(issue.Data.UpdatedAt)\n\t} else {\n\t\tupdatedAtOutput = issue.Data.UpdatedAt.Format(timeFormat)\n\t}\n\n\treturn issue.getTextStyle().Render(updatedAtOutput)\n}\n\nfunc (issue *Issue) renderCreatedAt() string {\n\ttimeFormat := issue.Ctx.Config.Defaults.DateFormat\n\n\tcreatedAtOutput := \"\"\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\tcreatedAtOutput = utils.TimeElapsed(issue.Data.CreatedAt)\n\t} else {\n\t\tcreatedAtOutput = issue.Data.CreatedAt.Format(timeFormat)\n\t}\n\n\treturn issue.getTextStyle().Render(createdAtOutput)\n}\n\nfunc (issue *Issue) renderRepoName() string {\n\trepoName := issue.Data.Repository.Name\n\treturn issue.getTextStyle().Render(repoName)\n}\n\nfunc (issue *Issue) renderTitle() string {\n\treturn components.RenderIssueTitle(\n\t\tissue.Ctx,\n\t\tissue.Data.State,\n\t\tissue.Data.Title,\n\t\tissue.Data.Number,\n\t)\n}\n\nfunc (issue *Issue) renderOpenedBy() string {\n\treturn issue.getTextStyle().Render(issue.Data.GetAuthor(issue.Ctx.Theme, issue.ShowAuthorIcon))\n}\n\nfunc (issue *Issue) renderAssignees() string {\n\tassignees := make([]string, 0, len(issue.Data.Assignees.Nodes))\n\tfor _, assignee := range issue.Data.Assignees.Nodes {\n\t\tassignees = append(assignees, assignee.Login)\n\t}\n\treturn issue.getTextStyle().Render(strings.Join(assignees, \",\"))\n}\n\nfunc (issue *Issue) renderStatus() string {\n\tif issue.Data.State == \"OPEN\" {\n\t\treturn lipgloss.NewStyle().Foreground(issue.Ctx.Styles.Colors.OpenIssue).Render(\"\")\n\t} else {\n\t\treturn issue.getTextStyle().Render(\"\")\n\t}\n}\n\nfunc (issue *Issue) renderNumComments() string {\n\treturn issue.getTextStyle().Render(fmt.Sprintf(\"%d\", issue.Data.Comments.TotalCount))\n}\n\nfunc (issue *Issue) renderNumReactions() string {\n\treturn issue.getTextStyle().Render(fmt.Sprintf(\"%d\", issue.Data.Reactions.TotalCount))\n}\n"
  },
  {
    "path": "internal/tui/components/issuessection/constants.go",
    "content": "package issuessection\n\nvar issueNumCommentsCellWidth = 6\n"
  },
  {
    "path": "internal/tui/components/issuessection/issuessection.go",
    "content": "package issuessection\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issuerow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nconst SectionType = \"issue\"\n\ntype Model struct {\n\tsection.BaseModel\n\tIssues []data.IssueData\n}\n\nfunc NewModel(\n\tid int,\n\tctx *context.ProgramContext,\n\tcfg config.IssuesSectionConfig,\n\tlastUpdated time.Time,\n\tcreatedAt time.Time,\n) Model {\n\tm := Model{}\n\tm.BaseModel = section.NewModel(\n\t\tctx,\n\t\tsection.NewSectionOptions{\n\t\t\tId:          id,\n\t\t\tConfig:      cfg.ToSectionConfig(),\n\t\t\tType:        SectionType,\n\t\t\tColumns:     GetSectionColumns(cfg, ctx),\n\t\t\tSingular:    m.GetItemSingularForm(),\n\t\t\tPlural:      m.GetItemPluralForm(),\n\t\t\tLastUpdated: lastUpdated,\n\t\t\tCreatedAt:   createdAt,\n\t\t},\n\t)\n\tm.Issues = []data.IssueData{}\n\n\treturn m\n}\n\nfunc (m *Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {\n\tvar cmd tea.Cmd\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyPressMsg:\n\n\t\tif m.IsSearchFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.SearchBar.SetValue(m.SearchValue)\n\t\t\t\tblinkCmd := m.SetIsSearching(false)\n\t\t\t\treturn m, blinkCmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tm.SearchValue = m.SearchBar.Value()\n\t\t\t\tm.SyncSmartFilterWithSearchValue()\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tif m.IsPromptConfirmationFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tcmd = m.SetIsPromptConfirmationShown(false)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tinput := m.PromptConfirmationBox.Value()\n\t\t\t\taction := m.GetPromptConfirmationAction()\n\t\t\t\tif input == \"\" || input == \"Y\" || input == \"y\" {\n\t\t\t\t\tissue := m.GetCurrRow()\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.Id, Type: SectionType}\n\t\t\t\t\tswitch action {\n\t\t\t\t\tcase \"close\":\n\t\t\t\t\t\tcmd = tasks.CloseIssue(m.Ctx, sid, issue)\n\t\t\t\t\tcase \"reopen\":\n\t\t\t\t\t\tcmd = tasks.ReopenIssue(m.Ctx, sid, issue)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tblinkCmd := m.SetIsPromptConfirmationShown(false)\n\n\t\t\t\treturn m, tea.Batch(cmd, blinkCmd)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tswitch {\n\t\tcase key.Matches(msg, keys.IssueKeys.ToggleSmartFiltering):\n\t\t\tif m.HasCurrentRepoNameInConfiguredFilter() || !m.HasRepoNameInConfiguredFilter() {\n\t\t\t\tm.IsFilteredByCurrentRemote = !m.IsFilteredByCurrentRemote\n\t\t\t}\n\t\t\tsearchValue := m.GetSearchValue()\n\t\t\tif m.SearchValue != searchValue {\n\t\t\t\tm.SearchValue = searchValue\n\t\t\t\tm.SearchBar.SetValue(searchValue)\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\t\t}\n\n\tcase tasks.UpdateIssueMsg:\n\t\tfor i, currIssue := range m.Issues {\n\t\t\tif currIssue.Number == msg.IssueNumber {\n\t\t\t\tif msg.IsClosed != nil {\n\t\t\t\t\tif *msg.IsClosed {\n\t\t\t\t\t\tcurrIssue.State = \"CLOSED\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrIssue.State = \"OPEN\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msg.Labels != nil {\n\t\t\t\t\tcurrIssue.Labels.Nodes = msg.Labels.Nodes\n\t\t\t\t}\n\t\t\t\tif msg.NewComment != nil {\n\t\t\t\t\tcurrIssue.Comments.Nodes = append(currIssue.Comments.Nodes, *msg.NewComment)\n\t\t\t\t}\n\t\t\t\tif msg.AddedAssignees != nil {\n\t\t\t\t\tcurrIssue.Assignees.Nodes = addAssignees(\n\t\t\t\t\t\tcurrIssue.Assignees.Nodes, msg.AddedAssignees.Nodes)\n\t\t\t\t}\n\t\t\t\tif msg.RemovedAssignees != nil {\n\t\t\t\t\tcurrIssue.Assignees.Nodes = removeAssignees(\n\t\t\t\t\t\tcurrIssue.Assignees.Nodes, msg.RemovedAssignees.Nodes)\n\t\t\t\t}\n\t\t\t\tm.Issues[i] = currIssue\n\t\t\t\tm.SetIsLoading(false)\n\t\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\tcase SectionIssuesFetchedMsg:\n\t\tif m.LastFetchTaskId == msg.TaskId {\n\t\t\tif m.PageInfo != nil {\n\t\t\t\tm.Issues = append(m.Issues, msg.Issues...)\n\t\t\t} else {\n\t\t\t\tm.Issues = msg.Issues\n\t\t\t}\n\t\t\tm.TotalCount = msg.TotalCount\n\t\t\tm.SetIsLoading(false)\n\t\t\tm.PageInfo = &msg.PageInfo\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\tm.UpdateLastUpdated(time.Now())\n\t\t\tm.UpdateTotalItemsCount(m.TotalCount)\n\t\t}\n\t}\n\n\tsearch, searchCmd := m.SearchBar.Update(msg)\n\tm.SearchBar = search\n\n\tprompt, promptCmd := m.PromptConfirmationBox.Update(msg)\n\tm.PromptConfirmationBox = prompt\n\n\ttable, tableCmd := m.Table.Update(msg)\n\tm.Table = table\n\n\treturn m, tea.Batch(cmd, searchCmd, promptCmd, tableCmd)\n}\n\nfunc GetSectionColumns(\n\tcfg config.IssuesSectionConfig,\n\tctx *context.ProgramContext,\n) []table.Column {\n\tdLayout := ctx.Config.Defaults.Layout.Issues\n\tsLayout := cfg.Layout\n\n\tupdatedAtLayout := config.MergeColumnConfigs(\n\t\tdLayout.UpdatedAt,\n\t\tsLayout.UpdatedAt,\n\t)\n\tcreatedAtLayout := config.MergeColumnConfigs(\n\t\tdLayout.CreatedAt,\n\t\tsLayout.CreatedAt,\n\t)\n\tstateLayout := config.MergeColumnConfigs(dLayout.State, sLayout.State)\n\trepoLayout := config.MergeColumnConfigs(dLayout.Repo, sLayout.Repo)\n\ttitleLayout := config.MergeColumnConfigs(dLayout.Title, sLayout.Title)\n\tcreatorLayout := config.MergeColumnConfigs(dLayout.Creator, sLayout.Creator)\n\tassigneesLayout := config.MergeColumnConfigs(\n\t\tdLayout.Assignees,\n\t\tsLayout.Assignees,\n\t)\n\tcommentsLayout := config.MergeColumnConfigs(\n\t\tdLayout.Comments,\n\t\tsLayout.Comments,\n\t)\n\treactionsLayout := config.MergeColumnConfigs(\n\t\tdLayout.Reactions,\n\t\tsLayout.Reactions,\n\t)\n\n\treturn []table.Column{\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  stateLayout.Width,\n\t\t\tHidden: stateLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  repoLayout.Width,\n\t\t\tHidden: repoLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Title\",\n\t\t\tGrow:   utils.BoolPtr(true),\n\t\t\tHidden: titleLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Creator\",\n\t\t\tWidth:  creatorLayout.Width,\n\t\t\tHidden: creatorLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Assignees\",\n\t\t\tWidth:  assigneesLayout.Width,\n\t\t\tHidden: assigneesLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  constants.CommentsIcon,\n\t\t\tWidth:  &issueNumCommentsCellWidth,\n\t\t\tHidden: commentsLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  &issueNumCommentsCellWidth,\n\t\t\tHidden: reactionsLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󱦻\",\n\t\t\tWidth:  updatedAtLayout.Width,\n\t\t\tHidden: updatedAtLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󱡢\",\n\t\t\tWidth:  createdAtLayout.Width,\n\t\t\tHidden: createdAtLayout.Hidden,\n\t\t},\n\t}\n}\n\nfunc (m Model) BuildRows() []table.Row {\n\tvar rows []table.Row\n\tfor _, currIssue := range m.Issues {\n\t\tissueModel := issuerow.Issue{Ctx: m.Ctx, Data: currIssue, ShowAuthorIcon: m.ShowAuthorIcon}\n\t\trows = append(rows, issueModel.ToTableRow())\n\t}\n\n\tif rows == nil {\n\t\trows = []table.Row{}\n\t}\n\n\treturn rows\n}\n\nfunc (m *Model) NumRows() int {\n\treturn len(m.Issues)\n}\n\nfunc (m *Model) GetCurrRow() data.RowData {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.Issues) {\n\t\treturn nil\n\t}\n\tissue := m.Issues[idx]\n\treturn &issue\n}\n\nfunc (m *Model) FetchNextPageSectionRows() []tea.Cmd {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tif m.PageInfo != nil && !m.PageInfo.HasNextPage {\n\t\treturn nil\n\t}\n\n\tvar cmds []tea.Cmd\n\n\tstartCursor := time.Now().String()\n\tif m.PageInfo != nil {\n\t\tstartCursor = m.PageInfo.StartCursor\n\t}\n\ttaskId := fmt.Sprintf(\"fetching_issues_%d_%s\", m.Id, startCursor)\n\tm.LastFetchTaskId = taskId\n\ttask := context.Task{\n\t\tId:        taskId,\n\t\tStartText: fmt.Sprintf(`Fetching issues for \"%s\"`, m.Config.Title),\n\t\tFinishedText: fmt.Sprintf(\n\t\t\t`Issues for \"%s\" have been fetched`,\n\t\t\tm.Config.Title,\n\t\t),\n\t\tState: context.TaskStart,\n\t\tError: nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\tcmds = append(cmds, startCmd)\n\n\tfetchCmd := func() tea.Msg {\n\t\tlimit := m.Config.Limit\n\t\tif limit == nil {\n\t\t\tlimit = &m.Ctx.Config.Defaults.IssuesLimit\n\t\t}\n\t\tres, err := data.FetchIssues(m.GetFilters(), *limit, m.PageInfo)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   m.Id,\n\t\t\t\tSectionType: m.Type,\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tErr:         err,\n\t\t\t}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: m.Type,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg: SectionIssuesFetchedMsg{\n\t\t\t\tIssues:     res.Issues,\n\t\t\t\tTotalCount: res.TotalCount,\n\t\t\t\tPageInfo:   res.PageInfo,\n\t\t\t\tTaskId:     taskId,\n\t\t\t},\n\t\t}\n\t}\n\tcmds = append(cmds, fetchCmd)\n\n\treturn cmds\n}\n\nfunc (m *Model) UpdateLastUpdated(t time.Time) {\n\tm.Table.UpdateLastUpdated(t)\n}\n\nfunc (m *Model) ResetRows() {\n\tm.Issues = nil\n\tm.BaseModel.ResetRows()\n}\n\nfunc FetchAllSections(\n\tctx *context.ProgramContext,\n) (sections []section.Section, fetchAllCmd tea.Cmd) {\n\tsectionConfigs := ctx.Config.IssuesSections\n\tfetchIssuesCmds := make([]tea.Cmd, 0, len(sectionConfigs))\n\tsections = make([]section.Section, 0, len(sectionConfigs))\n\tfor i, sectionConfig := range sectionConfigs {\n\t\tsectionModel := NewModel(\n\t\t\ti+1,\n\t\t\tctx,\n\t\t\tsectionConfig,\n\t\t\ttime.Now(),\n\t\t\ttime.Now(),\n\t\t) // 0 is the search section\n\t\tif sectionConfig.Layout.CreatorIcon.Hidden != nil {\n\t\t\tsectionModel.ShowAuthorIcon = !*sectionConfig.Layout.CreatorIcon.Hidden\n\t\t}\n\t\tsections = append(sections, &sectionModel)\n\t\tfetchIssuesCmds = append(\n\t\t\tfetchIssuesCmds,\n\t\t\tsectionModel.FetchNextPageSectionRows()...)\n\t}\n\treturn sections, tea.Batch(fetchIssuesCmds...)\n}\n\ntype SectionIssuesFetchedMsg struct {\n\tIssues     []data.IssueData\n\tTotalCount int\n\tPageInfo   data.PageInfo\n\tTaskId     string\n}\n\nfunc addAssignees(assignees, addedAssignees []data.Assignee) []data.Assignee {\n\tnewAssignees := assignees\n\tfor _, assignee := range addedAssignees {\n\t\tif !assigneesContains(newAssignees, assignee) {\n\t\t\tnewAssignees = append(newAssignees, assignee)\n\t\t}\n\t}\n\n\treturn newAssignees\n}\n\nfunc removeAssignees(\n\tassignees, removedAssignees []data.Assignee,\n) []data.Assignee {\n\tnewAssignees := []data.Assignee{}\n\tfor _, assignee := range assignees {\n\t\tif !assigneesContains(removedAssignees, assignee) {\n\t\t\tnewAssignees = append(newAssignees, assignee)\n\t\t}\n\t}\n\n\treturn newAssignees\n}\n\nfunc assigneesContains(assignees []data.Assignee, assignee data.Assignee) bool {\n\treturn slices.Contains(assignees, assignee)\n}\n\nfunc (m Model) GetItemSingularForm() string {\n\treturn \"Issue\"\n}\n\nfunc (m Model) GetItemPluralForm() string {\n\treturn \"Issues\"\n}\n\nfunc (m Model) GetTotalCount() int {\n\treturn m.TotalCount\n}\n\nfunc (m *Model) GetIsLoading() bool {\n\treturn m.IsLoading\n}\n\nfunc (m *Model) SetIsLoading(val bool) {\n\tm.IsLoading = val\n\tm.Table.SetIsLoading(val)\n}\n\nfunc (m Model) GetPagerContent() string {\n\tpagerContent := \"\"\n\tif m.TotalCount > 0 {\n\t\tpagerContent = fmt.Sprintf(\n\t\t\t\"%v %v • %v %v/%v • Fetched %v\",\n\t\t\tconstants.WaitingIcon,\n\t\t\tm.LastUpdated().Format(\"01/02 15:04:05\"),\n\t\t\tm.SingularForm,\n\t\t\tm.Table.GetCurrItem()+1,\n\t\t\tm.TotalCount,\n\t\t\tlen(m.Table.Rows),\n\t\t)\n\t}\n\tpager := m.Ctx.Styles.ListViewPort.PagerStyle.Render(pagerContent)\n\treturn pager\n}\n"
  },
  {
    "path": "internal/tui/components/issueview/action.go",
    "content": "package issueview\n\n// IssueActionType identifies the type of action requested by a key press in the issue view.\ntype IssueActionType int\n\nconst (\n\tIssueActionNone IssueActionType = iota\n\tIssueActionLabel\n\tIssueActionAssign\n\tIssueActionUnassign\n\tIssueActionComment\n\tIssueActionClose\n\tIssueActionReopen\n)\n\n// IssueAction represents an action to be performed on an issue.\ntype IssueAction struct {\n\tType IssueActionType\n}\n"
  },
  {
    "path": "internal/tui/components/issueview/action_test.go",
    "content": "package issueview\n\nimport (\n\t\"testing\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issuerow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\nfunc newTestModelForAction(t *testing.T) Model {\n\tt.Helper()\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.issue = &issuerow.Issue{\n\t\tCtx:  ctx,\n\t\tData: data.IssueData{},\n\t}\n\treturn m\n}\n\nfunc TestUpdateReturnsCorrectActions(t *testing.T) {\n\ttestCases := []struct {\n\t\tname           string\n\t\tkeyBinding     string\n\t\texpectedAction IssueActionType\n\t}{\n\t\t{\"label key\", \"L\", IssueActionLabel},\n\t\t{\"assign key\", \"a\", IssueActionAssign},\n\t\t{\"unassign key\", \"A\", IssueActionUnassign},\n\t\t{\"comment key\", \"c\", IssueActionComment},\n\t\t{\"close key\", \"x\", IssueActionClose},\n\t\t{\"reopen key\", \"X\", IssueActionReopen},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tm := newTestModelForAction(t)\n\t\t\tmsg := tea.KeyPressMsg{Text: tc.keyBinding}\n\n\t\t\t_, _, action := m.Update(msg)\n\n\t\t\trequire.NotNil(t, action, \"expected action for key %q\", tc.keyBinding)\n\t\t\trequire.Equal(\n\t\t\t\tt,\n\t\t\t\ttc.expectedAction,\n\t\t\t\taction.Type,\n\t\t\t\t\"expected action type %v for key %q, got %v\",\n\t\t\t\ttc.expectedAction,\n\t\t\t\ttc.keyBinding,\n\t\t\t\taction.Type,\n\t\t\t)\n\t\t})\n\t}\n}\n\nfunc TestUpdateReturnsNilActionForUnknownKeys(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tmsg := tea.KeyPressMsg{Text: \"z\"}\n\n\t_, _, action := m.Update(msg)\n\n\trequire.Nil(t, action, \"expected nil action for unknown key\")\n}\n\nfunc TestUpdateReturnsNilActionWhenCommenting(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isCommenting = true\n\tmsg := tea.KeyPressMsg{Text: \"L\"} // label key\n\n\t_, _, action := m.Update(msg)\n\n\trequire.Nil(t, action, \"expected nil action when in commenting mode\")\n}\n\nfunc TestUpdateReturnsNilActionWhenLabeling(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isLabeling = true\n\tmsg := tea.KeyPressMsg{Text: \"c\"} // comment key\n\n\t_, _, action := m.Update(msg)\n\n\trequire.Nil(t, action, \"expected nil action when in labeling mode\")\n}\n\nfunc TestUpdateReturnsNilActionWhenAssigning(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isAssigning = true\n\tmsg := tea.KeyPressMsg{Text: \"x\"} // close key\n\n\t_, _, action := m.Update(msg)\n\n\trequire.Nil(t, action, \"expected nil action when in assigning mode\")\n}\n\nfunc TestUpdateReturnsNilActionWhenUnassigning(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isUnassigning = true\n\tmsg := tea.KeyPressMsg{Text: \"X\"} // reopen key\n\n\t_, _, action := m.Update(msg)\n\n\trequire.Nil(t, action, \"expected nil action when in unassigning mode\")\n}\n\nfunc TestIssueActionTypes(t *testing.T) {\n\t// Verify all action types are distinct\n\tactionTypes := []IssueActionType{\n\t\tIssueActionNone,\n\t\tIssueActionLabel,\n\t\tIssueActionAssign,\n\t\tIssueActionUnassign,\n\t\tIssueActionComment,\n\t\tIssueActionClose,\n\t\tIssueActionReopen,\n\t}\n\n\tseen := make(map[IssueActionType]bool)\n\tfor _, at := range actionTypes {\n\t\trequire.False(t, seen[at], \"duplicate action type value: %v\", at)\n\t\tseen[at] = true\n\t}\n\n\t// Verify IssueActionNone is zero value\n\trequire.Equal(t, IssueActionType(0), IssueActionNone, \"IssueActionNone should be zero value\")\n}\n\nfunc TestUpdateWithReboundKeys(t *testing.T) {\n\t// Save original key bindings\n\toriginalLabelKeys := keys.IssueKeys.Label.Keys()\n\n\t// Rebind label key to \"l\" (lowercase)\n\tkeys.IssueKeys.Label.SetKeys(\"l\")\n\tdefer func() {\n\t\t// Restore original bindings\n\t\tkeys.IssueKeys.Label.SetKeys(originalLabelKeys...)\n\t}()\n\n\tm := newTestModelForAction(t)\n\tmsg := tea.KeyPressMsg{Text: \"l\"}\n\n\t_, _, action := m.Update(msg)\n\n\trequire.NotNil(t, action, \"expected action for rebound key\")\n\trequire.Equal(t, IssueActionLabel, action.Type, \"expected label action for rebound key\")\n}\n\n// TestAutocompleteStateResetWhenSwitchingModes verifies that autocomplete\n// suggestions from labeling mode don't leak into commenting mode.\n// This is a regression test for https://github.com/dlvhdr/gh-dash/issues/751\nfunc TestAutocompleteStateResetWhenSwitchingModes(t *testing.T) {\n\tm := newTestModelForAction(t)\n\n\t// Simulate what happens when entering labeling mode:\n\t// 1. Autocomplete gets populated with label suggestions\n\tm.ac.SetSuggestions([]string{\"bug\", \"feature\", \"documentation\", \"enhancement\"})\n\n\t// 2. User types something and autocomplete filters/shows suggestions\n\t// This populates the internal 'filtered' slice\n\tm.ac.Show(\"fea\", nil) // Would match \"feature\"\n\n\t// Verify autocomplete has suggestions (the bug condition)\n\trequire.True(t, m.ac.HasSuggestions(),\n\t\t\"autocomplete should have suggestions after Show()\")\n\n\t// 3. User exits labeling mode (Escape) - in the bug, this only hid but didn't reset\n\tm.ac.Hide()\n\n\t// In the buggy code, HasSuggestions() would still return true here\n\t// because Hide() only sets visible=false but doesn't clear filtered\n\n\t// 4. User enters commenting mode\n\tm.SetIsCommenting(true)\n\n\t// 5. After the fix, autocomplete state should be fully reset\n\trequire.False(t, m.ac.HasSuggestions(),\n\t\t\"autocomplete should have no suggestions after entering comment mode\")\n\trequire.False(t, m.ac.IsVisible(),\n\t\t\"autocomplete should not be visible after entering comment mode\")\n}\n\n// TestAutocompleteResetOnAssignMode verifies autocomplete is reset when entering assign mode\nfunc TestAutocompleteResetOnAssignMode(t *testing.T) {\n\tm := newTestModelForAction(t)\n\n\t// Set up autocomplete with label suggestions\n\tm.ac.SetSuggestions([]string{\"bug\", \"feature\"})\n\tm.ac.Show(\"bug\", nil)\n\trequire.True(t, m.ac.HasSuggestions(), \"precondition: autocomplete should have suggestions\")\n\n\t// Enter assign mode\n\tm.SetIsAssigning(true)\n\n\t// Autocomplete should be reset\n\trequire.False(t, m.ac.HasSuggestions(),\n\t\t\"autocomplete should have no suggestions after entering assign mode\")\n}\n\n// TestAutocompleteResetOnUnassignMode verifies autocomplete is reset when entering unassign mode\nfunc TestAutocompleteResetOnUnassignMode(t *testing.T) {\n\tm := newTestModelForAction(t)\n\n\t// Set up autocomplete with label suggestions\n\tm.ac.SetSuggestions([]string{\"bug\", \"feature\"})\n\tm.ac.Show(\"bug\", nil)\n\trequire.True(t, m.ac.HasSuggestions(), \"precondition: autocomplete should have suggestions\")\n\n\t// Enter unassign mode\n\tm.SetIsUnassigning(true)\n\n\t// Autocomplete should be reset\n\trequire.False(t, m.ac.HasSuggestions(),\n\t\t\"autocomplete should have no suggestions after entering unassign mode\")\n}\n\n// TestInputBoxTextNotReplacedByStaleAutocomplete is an end-to-end test that\n// verifies the full bug scenario: typing in comment box after exiting label mode\n// should not autocomplete with label names.\nfunc TestInputBoxTextNotReplacedByStaleAutocomplete(t *testing.T) {\n\tm := newTestModelForAction(t)\n\n\t// Step 1: Simulate labeling mode with suggestions\n\tm.ac.SetSuggestions([]string{\"bug\", \"feature\", \"documentation\"})\n\tm.isLabeling = true\n\tm.ac.Show(\"fea\", nil) // User typed \"fea\", matches \"feature\"\n\n\t// Step 2: Exit labeling mode (simulates pressing Escape)\n\tm.isLabeling = false\n\tm.ac.Hide()\n\n\t// Step 3: Enter commenting mode\n\tm.SetIsCommenting(true)\n\n\t// Step 4: Set some text in the input box (simulates user typing)\n\tm.inputBox.SetValue(\"This is my comment about fea\")\n\n\t// Step 5: Verify that Tab key does NOT trigger autocomplete selection\n\t// because autocomplete was reset when entering comment mode\n\ttabMsg := tea.KeyPressMsg{Code: tea.KeyTab}\n\tm.inputBox.Update(tabMsg)\n\n\t// The text should remain unchanged (not replaced with \"feature\")\n\trequire.Equal(t, \"This is my comment about fea\", m.inputBox.Value(),\n\t\t\"input text should not be modified by Tab when autocomplete is reset\")\n}\n"
  },
  {
    "path": "internal/tui/components/issueview/activity.go",
    "content": "package issueview\n\nimport (\n\t\"sort\"\n\t\"time\"\n\n\t\"charm.land/glamour/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype RenderedActivity struct {\n\tUpdatedAt      time.Time\n\tRenderedString string\n}\n\nfunc (m *Model) renderActivity() string {\n\twidth := m.getIndentedContentWidth() - 2\n\tmarkdownRenderer := markdown.GetMarkdownRenderer(width)\n\n\tvar activity []RenderedActivity\n\tfor _, comment := range m.issue.Data.Comments.Nodes {\n\t\trenderedComment, err := m.renderComment(comment, markdownRenderer)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tactivity = append(activity, RenderedActivity{\n\t\t\tUpdatedAt:      comment.UpdatedAt,\n\t\t\tRenderedString: renderedComment,\n\t\t})\n\t}\n\n\tsort.Slice(activity, func(i, j int) bool {\n\t\treturn activity[i].UpdatedAt.Before(activity[j].UpdatedAt)\n\t})\n\n\tbody := \"\"\n\tbodyStyle := lipgloss.NewStyle().PaddingLeft(2)\n\tif len(activity) == 0 {\n\t\tbody = renderEmptyState()\n\t} else {\n\t\tvar renderedActivities []string\n\t\tfor _, activity := range activity {\n\t\t\trenderedActivities = append(renderedActivities, activity.RenderedString)\n\t\t}\n\t\tbody = lipgloss.JoinVertical(lipgloss.Left, renderedActivities...)\n\t}\n\n\treturn lipgloss.JoinVertical(lipgloss.Left, m.renderActivitiesTitle(), bodyStyle.Render(body))\n}\n\nfunc (m Model) renderActivitiesTitle() string {\n\treturn m.ctx.Styles.Common.MainTextStyle.\n\t\tMarginBottom(1).\n\t\tUnderline(true).\n\t\tRender(\" Comments\")\n}\n\nfunc renderEmptyState() string {\n\treturn lipgloss.NewStyle().Italic(true).Render(\"No comments...\")\n}\n\nfunc (m *Model) renderComment(\n\tcomment data.IssueComment,\n\tmarkdownRenderer glamour.TermRenderer,\n) (string, error) {\n\twidth := m.getIndentedContentWidth() - 2\n\theader := lipgloss.NewStyle().\n\t\tWidth(width).\n\t\tBorderStyle(lipgloss.RoundedBorder()).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).Render(\n\t\tlipgloss.JoinHorizontal(\n\t\t\tlipgloss.Top,\n\t\t\tm.ctx.Styles.Common.MainTextStyle.Render(comment.Author.Login),\n\t\t\t\" \",\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tForeground(m.ctx.Theme.FaintText).\n\t\t\t\tRender(utils.TimeElapsed(comment.UpdatedAt)),\n\t\t))\n\n\tbody := lineCleanupRegex.ReplaceAllString(comment.Body, \"\")\n\tbody, err := markdownRenderer.Render(body)\n\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\theader,\n\t\tbody,\n\t), err\n}\n"
  },
  {
    "path": "internal/tui/components/issueview/issueview.go",
    "content": "package issueview\n\nimport (\n\t\"fmt\"\n\t\"image/color\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/spinner\"\n\t\"charm.land/bubbles/v2/textarea\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/autocomplete\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/inputbox\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issuerow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issuessection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nvar (\n\thtmlCommentRegex = regexp.MustCompile(\"(?U)<!--(.|[[:space:]])*-->\")\n\tlineCleanupRegex = regexp.MustCompile(`((\\n)+|^)([^\\r\\n]*\\|[^\\r\\n]*(\\n)?)+`)\n)\n\ntype RepoLabelsFetchedMsg struct {\n\tLabels []data.Label\n}\n\ntype RepoLabelsFetchFailedMsg struct {\n\tErr error\n}\n\ntype Model struct {\n\tctx       *context.ProgramContext\n\tissue     *issuerow.Issue\n\tsectionId int\n\twidth     int\n\n\tShowConfirmCancel bool\n\tisCommenting      bool\n\tisLabeling        bool\n\tisAssigning       bool\n\tisUnassigning     bool\n\n\tinputBox   inputbox.Model\n\tac         *autocomplete.Model\n\trepoLabels []data.Label\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tinputBox := inputbox.NewModel(ctx)\n\tlinesToAdjust := 5\n\tinputBox.SetHeight(common.InputBoxHeight - linesToAdjust)\n\n\tinputBox.OnSuggestionSelected = handleLabelSelection\n\tinputBox.CurrentContext = labelAtCursor\n\tinputBox.SuggestionsToExclude = allLabels\n\n\tac := autocomplete.NewModel(ctx)\n\tinputBox.SetAutocomplete(&ac)\n\n\treturn Model{\n\t\tissue: nil,\n\n\t\tisCommenting:  false,\n\t\tisLabeling:    false,\n\t\tisAssigning:   false,\n\t\tisUnassigning: false,\n\n\t\tinputBox:   inputBox,\n\t\tac:         &ac,\n\t\trepoLabels: nil,\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd, *IssueAction) {\n\tvar (\n\t\tcmds  []tea.Cmd\n\t\tcmd   tea.Cmd\n\t\ttaCmd tea.Cmd\n\t)\n\n\tswitch msg := msg.(type) {\n\tcase RepoLabelsFetchedMsg:\n\t\tclearCmd := m.ac.SetFetchSuccess()\n\t\tm.repoLabels = msg.Labels\n\t\tlabelNames := data.GetLabelNames(msg.Labels)\n\t\tm.ac.SetSuggestions(labelNames)\n\t\tif m.isLabeling {\n\t\t\tcursorPos := m.inputBox.GetCursorPosition()\n\t\t\tcurrentLabel := labelAtCursor(cursorPos, m.inputBox.Value())\n\t\t\texistingLabels := allLabels(m.inputBox.Value())\n\t\t\tm.ac.Show(currentLabel, existingLabels)\n\t\t}\n\t\treturn m, clearCmd, nil\n\n\tcase RepoLabelsFetchFailedMsg:\n\t\tclearCmd := m.ac.SetFetchError(msg.Err)\n\t\treturn m, clearCmd, nil\n\n\tcase autocomplete.FetchSuggestionsRequestedMsg:\n\t\t// Only fetch when we're in labeling mode (where labels are relevant)\n\t\tif m.isLabeling {\n\t\t\t// If this is a forced refresh (e.g., via Ctrl+F), clear the cached labels\n\t\t\t// for this repo so FetchRepoLabels will actually call the gh CLI.\n\t\t\tif msg.Force {\n\t\t\t\tif m.issue != nil {\n\t\t\t\t\trepoName := m.issue.Data.GetRepoNameWithOwner()\n\t\t\t\t\tdata.ClearRepoLabelCache(repoName)\n\t\t\t\t}\n\t\t\t}\n\t\t\tcmd := m.fetchLabels()\n\t\t\treturn m, cmd, nil\n\t\t}\n\t\treturn m, nil, nil\n\n\tcase tea.KeyMsg:\n\t\tif m.isCommenting {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tif len(strings.Trim(m.inputBox.Value(), \" \")) != 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: issuessection.SectionType}\n\t\t\t\t\tcmd = tasks.CommentOnIssue(m.ctx, sid, m.issue.Data, m.inputBox.Value())\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isCommenting = false\n\t\t\t\treturn m, cmd, nil\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tif !m.ShowConfirmCancel {\n\t\t\t\t\tm.shouldCancelComment()\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif msg.String() == \"Y\" || msg.String() == \"y\" {\n\t\t\t\t\tif m.shouldCancelComment() {\n\t\t\t\t\t\treturn m, nil, nil\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif m.ShowConfirmCancel && (msg.String() == \"N\" || msg.String() == \"n\") {\n\t\t\t\t\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\t\t\t\t\tm.ShowConfirmCancel = false\n\t\t\t\t\treturn m, nil, nil\n\t\t\t\t}\n\t\t\t\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\t\t\t\tm.ShowConfirmCancel = false\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else if m.isLabeling {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tlabels := allLabels(m.inputBox.Value())\n\t\t\t\tif len(labels) > 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: issuessection.SectionType}\n\t\t\t\t\tcmd = tasks.LabelIssue(\n\t\t\t\t\t\tm.ctx,\n\t\t\t\t\t\tsid,\n\t\t\t\t\t\tm.issue.Data,\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\tm.issue.Data.Labels.Nodes,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isLabeling = false\n\t\t\t\tm.ac.Hide()\n\t\t\t\treturn m, cmd, nil\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isLabeling = false\n\t\t\t\tm.ac.Hide()\n\t\t\t\treturn m, nil, nil\n\t\t\t}\n\n\t\t\tif key.Matches(msg, autocomplete.RefreshSuggestionsKey) {\n\t\t\t\tif m.issue != nil {\n\t\t\t\t\trepoName := m.issue.Data.GetRepoNameWithOwner()\n\t\t\t\t\tdata.ClearRepoLabelCache(repoName)\n\t\t\t\t}\n\t\t\t\tcmds = append(cmds, m.fetchLabels())\n\t\t\t}\n\n\t\t\tpreviousCursorPos := m.inputBox.GetCursorPosition()\n\t\t\tpreviousValue := m.inputBox.Value()\n\t\t\tpreviousLabel := labelAtCursor(previousCursorPos, previousValue)\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\n\t\t\tcurrentCursorPos := m.inputBox.GetCursorPosition()\n\t\t\tcurrentValue := m.inputBox.Value()\n\t\t\tcurrentLabel := labelAtCursor(currentCursorPos, currentValue)\n\n\t\t\tif currentLabel != previousLabel {\n\t\t\t\texistingLabels := allLabels(currentValue)\n\t\t\t\tm.ac.Show(currentLabel, existingLabels)\n\t\t\t}\n\t\t} else if m.isAssigning {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tusernames := strings.Fields(m.inputBox.Value())\n\t\t\t\tif len(usernames) > 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: issuessection.SectionType}\n\t\t\t\t\tcmd = tasks.AssignIssue(m.ctx, sid, m.issue.Data, usernames)\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isAssigning = false\n\t\t\t\treturn m, cmd, nil\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isAssigning = false\n\t\t\t\treturn m, nil, nil\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else if m.isUnassigning {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tusernames := strings.Fields(m.inputBox.Value())\n\t\t\t\tif len(usernames) > 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: issuessection.SectionType}\n\t\t\t\t\tcmd = tasks.UnassignIssue(m.ctx, sid, m.issue.Data, usernames)\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isUnassigning = false\n\t\t\t\treturn m, cmd, nil\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isUnassigning = false\n\t\t\t\treturn m, nil, nil\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else {\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Label):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionLabel}\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Assign):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionAssign}\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Unassign):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionUnassign}\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Comment):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionComment}\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Close):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionClose}\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Reopen):\n\t\t\t\treturn m, nil, &IssueAction{Type: IssueActionReopen}\n\t\t\t}\n\t\t\treturn m, nil, nil\n\t\t}\n\t}\n\n\tswitch msg.(type) {\n\tcase spinner.TickMsg, autocomplete.ClearFetchStatusMsg:\n\t\tvar acCmd tea.Cmd\n\t\t*m.ac, acCmd = m.ac.Update(msg)\n\t\tcmds = append(cmds, acCmd)\n\t}\n\n\treturn m, tea.Batch(cmds...), nil\n}\n\nfunc (m Model) View() string {\n\ts := strings.Builder{}\n\n\ts.WriteString(m.renderFullNameAndNumber())\n\ts.WriteString(\"\\n\")\n\n\ts.WriteString(m.renderTitle())\n\ts.WriteString(\"\\n\\n\")\n\ts.WriteString(m.renderStatusPill())\n\ts.WriteString(\"\\n\\n\")\n\ts.WriteString(m.renderAuthor())\n\ts.WriteString(\"\\n\\n\")\n\n\tlabels := m.renderLabels()\n\tif labels != \"\" {\n\t\ts.WriteString(labels)\n\t\ts.WriteString(\"\\n\\n\")\n\t}\n\n\ts.WriteString(m.renderBody())\n\ts.WriteString(\"\\n\\n\")\n\ts.WriteString(m.renderActivity())\n\n\tif m.isCommenting || m.isAssigning || m.isUnassigning {\n\t\ts.WriteString(m.inputBox.View())\n\t} else if m.isLabeling {\n\t\ts.WriteString(m.inputBox.ViewWithAutocomplete())\n\t}\n\n\treturn lipgloss.NewStyle().Padding(0, m.ctx.Styles.Sidebar.ContentPadding).Render(s.String())\n}\n\nfunc (m *Model) renderFullNameAndNumber() string {\n\treturn common.RenderPreviewHeader(m.ctx.Theme, m.width,\n\t\tfmt.Sprintf(\"#%d · %s\", m.issue.Data.GetNumber(), m.issue.Data.GetRepoNameWithOwner()))\n}\n\nfunc (m *Model) renderTitle() string {\n\treturn common.RenderPreviewTitle(m.ctx.Theme, m.ctx.Styles.Common, m.width, m.issue.Data.Title)\n}\n\nfunc (m *Model) renderStatusPill() string {\n\tvar bgColor color.Color\n\tcontent := \"\"\n\tswitch m.issue.Data.State {\n\tcase \"OPEN\":\n\t\tbgColor = m.ctx.Styles.Colors.OpenIssue.Dark\n\t\tcontent = \" Open\"\n\tcase \"CLOSED\":\n\t\tbgColor = m.ctx.Styles.Colors.ClosedIssue.Dark\n\t\tcontent = \" Closed\"\n\t}\n\n\treturn m.ctx.Styles.PrView.PillStyle.\n\t\tBorderForeground(bgColor).\n\t\tBackground(bgColor).\n\t\tRender(content)\n}\n\nfunc (m *Model) renderAuthor() string {\n\tauthorAssociation := m.issue.Data.AuthorAssociation\n\tif authorAssociation == \"\" {\n\t\tauthorAssociation = \"unknown role\"\n\t}\n\ttime := lipgloss.NewStyle().Render(utils.TimeElapsed(m.issue.Data.CreatedAt))\n\treturn lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\" by \",\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.PrimaryText).Render(\n\t\t\tlipgloss.NewStyle().Bold(true).Render(\"@\"+m.issue.Data.Author.Login)),\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\n\t\t\tlipgloss.JoinHorizontal(lipgloss.Top, \" ⋅ \", time, \" ago\", \" ⋅ \")),\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\n\t\t\tlipgloss.JoinHorizontal(lipgloss.Top, data.GetAuthorRoleIcon(m.issue.Data.AuthorAssociation,\n\t\t\t\tm.ctx.Theme),\n\t\t\t\t\" \", lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(strings.ToLower(authorAssociation))),\n\t\t),\n\t)\n}\n\nfunc (m *Model) renderBody() string {\n\twidth := m.getIndentedContentWidth()\n\t// Strip HTML comments from body and cleanup body.\n\tbody := htmlCommentRegex.ReplaceAllString(m.issue.Data.Body, \"\")\n\tbody = lineCleanupRegex.ReplaceAllString(body, \"\")\n\n\tbody = strings.TrimSpace(body)\n\tif body == \"\" {\n\t\treturn lipgloss.NewStyle().\n\t\t\tItalic(true).\n\t\t\tForeground(m.ctx.Theme.FaintText).\n\t\t\tRender(\"No description provided.\")\n\t}\n\n\tmarkdownRenderer := markdown.GetMarkdownRenderer(width)\n\trendered, err := markdownRenderer.Render(body)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\treturn lipgloss.NewStyle().\n\t\tWidth(width).\n\t\tMaxWidth(width).\n\t\tAlign(lipgloss.Left).\n\t\tRender(rendered)\n}\n\nfunc (m *Model) renderLabels() string {\n\twidth := m.getIndentedContentWidth()\n\tlabels := m.issue.Data.Labels.Nodes\n\tstyle := m.ctx.Styles.PrView.PillStyle\n\n\treturn common.RenderLabels(width, labels, style)\n}\n\nfunc (m *Model) getIndentedContentWidth() int {\n\treturn m.width - 6\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.width = width\n\tm.inputBox.SetWidth(width)\n\tm.ac.SetWidth(width - 4)\n}\n\nfunc (m *Model) SetSectionId(id int) {\n\tm.sectionId = id\n}\n\nfunc (m *Model) SetRow(data *data.IssueData) {\n\tif data == nil {\n\t\tm.issue = nil\n\t} else {\n\t\tm.issue = &issuerow.Issue{Ctx: m.ctx, Data: *data}\n\t}\n}\n\nfunc (m *Model) IsTextInputBoxFocused() bool {\n\treturn m.isCommenting || m.isAssigning || m.isUnassigning || m.isLabeling\n}\n\nfunc (m *Model) GetIsCommenting() bool {\n\treturn m.isCommenting\n}\n\nfunc (m *Model) shouldCancelComment() bool {\n\tif !m.ShowConfirmCancel {\n\t\tm.inputBox.SetPrompt(\n\t\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.ErrorText).Render(\"Discard comment? (y/N)\"),\n\t\t)\n\t\tm.ShowConfirmCancel = true\n\t\treturn false\n\t}\n\tm.inputBox.Blur()\n\tm.isCommenting = false\n\tm.ShowConfirmCancel = false\n\treturn true\n}\n\nfunc (m *Model) SetIsCommenting(isCommenting bool) tea.Cmd {\n\tif m.issue == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isCommenting && isCommenting {\n\t\tm.inputBox.Reset()\n\t\tm.ac.Reset() // Clear any stale autocomplete state (e.g., from labeling)\n\t}\n\tm.isCommenting = isCommenting\n\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\n\tif isCommenting {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) GetIsAssigning() bool {\n\treturn m.isAssigning\n}\n\nfunc (m *Model) SetIsAssigning(isAssigning bool) tea.Cmd {\n\tif m.issue == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isAssigning && isAssigning {\n\t\tm.inputBox.Reset()\n\t\tm.ac.Reset() // Clear any stale autocomplete state (e.g., from labeling)\n\t}\n\tm.isAssigning = isAssigning\n\tm.inputBox.SetPrompt(constants.AssignPrompt)\n\tif !m.userAssignedToIssue(m.ctx.User) {\n\t\tm.inputBox.SetValue(m.ctx.User)\n\t}\n\n\tif isAssigning {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) SetIsLabeling(isLabeling bool) tea.Cmd {\n\tif m.issue == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isLabeling && isLabeling {\n\t\tm.inputBox.Reset()\n\t}\n\tm.isLabeling = isLabeling\n\tm.inputBox.SetPrompt(constants.LabelPrompt)\n\n\tlabels := make([]string, 0)\n\tfor _, label := range m.issue.Data.Labels.Nodes {\n\t\tlabels = append(labels, label.Name)\n\t}\n\tlabels = append(labels, \"\")\n\tm.inputBox.SetValue(strings.Join(labels, \", \"))\n\n\t// Reset autocomplete\n\tm.ac.Hide()\n\tm.ac.SetSuggestions(nil)\n\n\t// Trigger label fetching for autocomplete\n\tif isLabeling {\n\t\trepoName := m.issue.Data.GetRepoNameWithOwner()\n\t\tif labels, ok := data.GetCachedRepoLabels(repoName); ok {\n\t\t\t// Use cached labels\n\t\t\tm.repoLabels = labels\n\t\t\tm.ac.SetSuggestions(data.GetLabelNames(labels))\n\t\t\tcursorPos := m.inputBox.GetCursorPosition()\n\t\t\tcurrentLabel := labelAtCursor(cursorPos, m.inputBox.Value())\n\t\t\texistingLabels := allLabels(m.inputBox.Value())\n\t\t\tm.ac.Show(currentLabel, existingLabels)\n\t\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t\t} else {\n\t\t\t// Fetch labels asynchronously\n\t\t\treturn tea.Sequence(m.fetchLabels(), textarea.Blink, m.inputBox.Focus())\n\t\t}\n\t}\n\treturn nil\n}\n\n// fetchLabels returns a command to fetch repository labels\nfunc (m *Model) fetchLabels() tea.Cmd {\n\tspinnerTickCmd := m.ac.SetFetchLoading()\n\n\tfetchCmd := func() tea.Msg {\n\t\trepoName := m.issue.Data.GetRepoNameWithOwner()\n\t\tlabels, err := data.FetchRepoLabels(repoName)\n\t\tif err != nil {\n\t\t\treturn RepoLabelsFetchFailedMsg{Err: err}\n\t\t}\n\t\treturn RepoLabelsFetchedMsg{Labels: labels}\n\t}\n\n\treturn tea.Batch(spinnerTickCmd, fetchCmd)\n}\n\nfunc (m *Model) userAssignedToIssue(login string) bool {\n\tfor _, a := range m.issue.Data.Assignees.Nodes {\n\t\tif login == a.Login {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (m *Model) GetIsUnassigning() bool {\n\treturn m.isUnassigning\n}\n\nfunc (m *Model) SetIsUnassigning(isUnassigning bool) tea.Cmd {\n\tif m.issue == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isUnassigning && isUnassigning {\n\t\tm.inputBox.Reset()\n\t\tm.ac.Reset() // Clear any stale autocomplete state (e.g., from labeling)\n\t}\n\tm.isUnassigning = isUnassigning\n\tm.inputBox.SetPrompt(constants.UnassignPrompt)\n\tm.inputBox.SetValue(strings.Join(m.issueAssignees(), \"\\n\"))\n\n\tif isUnassigning {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) issueAssignees() []string {\n\tvar assignees []string\n\tfor _, n := range m.issue.Data.Assignees.Nodes {\n\t\tassignees = append(assignees, n.Login)\n\t}\n\treturn assignees\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.inputBox.UpdateProgramContext(ctx)\n\tif m.ac != nil {\n\t\tm.ac.UpdateProgramContext(ctx)\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/issueview/labels.go",
    "content": "package issueview\n\nimport (\n\t\"strings\"\n)\n\n// LabelInfo contains information about a label at a specific cursor position\n// in a comma-separated list of labels.\n// StartIdx and EndIdx are rune indices (not byte indices).\ntype LabelInfo struct {\n\tLabel    string\n\tStartIdx int\n\tEndIdx   int\n\tIsFirst  bool\n\tIsLast   bool\n}\n\n// extractLabelAtCursor extracts information about the label at the given cursor position\n// in a comma-separated list. It considers the entire word containing the cursor as the\n// current label. The cursor position and returned indices are rune-based (not byte-based)\n// to correctly handle multi-byte Unicode characters.\nfunc extractLabelAtCursor(input string, cursorPos int) LabelInfo {\n\tif input == \"\" {\n\t\treturn LabelInfo{\n\t\t\tLabel:    \"\",\n\t\t\tStartIdx: 0,\n\t\t\tEndIdx:   0,\n\t\t\tIsFirst:  true,\n\t\t\tIsLast:   true,\n\t\t}\n\t}\n\n\trunes := []rune(input)\n\n\t// Clamp cursor position to valid range\n\tif cursorPos < 0 {\n\t\tcursorPos = 0\n\t}\n\tif cursorPos > len(runes) {\n\t\tcursorPos = len(runes)\n\t}\n\n\t// Find the comma before the cursor (or start of string)\n\tstartIdx := 0\n\tfor i := cursorPos - 1; i >= 0; i-- {\n\t\tif runes[i] == ',' {\n\t\t\tstartIdx = i + 1\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Find the comma after the cursor (or end of string)\n\tendIdx := len(runes)\n\tfor i := cursorPos; i < len(runes); i++ {\n\t\tif runes[i] == ',' {\n\t\t\tendIdx = i\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Extract and trim the label\n\tlabel := strings.TrimSpace(string(runes[startIdx:endIdx]))\n\n\t// Determine if this is the first or last label\n\tisFirst := startIdx == 0\n\tisLast := endIdx == len(runes)\n\n\treturn LabelInfo{\n\t\tLabel:    label,\n\t\tStartIdx: startIdx,\n\t\tEndIdx:   endIdx,\n\t\tIsFirst:  isFirst,\n\t\tIsLast:   isLast,\n\t}\n}\n\n// labelAtCursor returns the label text at the cursor position\nfunc labelAtCursor(cursorPos int, currentValue string) string {\n\tlabelInfo := extractLabelAtCursor(currentValue, cursorPos)\n\treturn labelInfo.Label\n}\n\n// allLabels splits the input by commas and returns trimmed labels\nfunc allLabels(value string) []string {\n\tif strings.TrimSpace(value) == \"\" {\n\t\treturn nil\n\t}\n\tparts := strings.Split(value, \",\")\n\tlabels := make([]string, 0, len(parts))\n\tfor _, part := range parts {\n\t\ttrimmed := strings.TrimSpace(part)\n\t\tif trimmed != \"\" {\n\t\t\tlabels = append(labels, trimmed)\n\t\t}\n\t}\n\treturn labels\n}\n\n// handleLabelSelection handles autocomplete selection for comma-separated labels.\n// It enforces consistent formatting:\n// - Single space after comma for non-first labels\n// - Always adds \", \" after the label for easy continuation\n// All indices are rune-based to correctly handle multi-byte Unicode characters.\nfunc handleLabelSelection(selected string, cursorPos int, currentValue string) (string, int) {\n\tlabelInfo := extractLabelAtCursor(currentValue, cursorPos)\n\trunes := []rune(currentValue)\n\n\t// Build replacement with consistent spacing and trailing comma\n\tvar replacement string\n\tif labelInfo.IsFirst {\n\t\treplacement = selected + \", \"\n\t} else {\n\t\treplacement = \" \" + selected + \", \"\n\t}\n\n\t// Determine what comes after the current label\n\t// Skip existing comma and spaces if present to avoid duplication\n\tremainingInput := string(runes[labelInfo.EndIdx:])\n\t// Remove the comma\n\tremainingInput = strings.TrimPrefix(remainingInput, \",\")\n\t// Skip any spaces after the comma\n\tremainingInput = strings.TrimLeft(remainingInput, \" \\t\")\n\n\t// Build new input by replacing the label at cursor position\n\tnewValue := string(runes[:labelInfo.StartIdx]) + replacement + remainingInput\n\n\t// Position cursor after the \", \" we added\n\tnewCursorPos := labelInfo.StartIdx + len([]rune(replacement))\n\n\treturn newValue, newCursorPos\n}\n"
  },
  {
    "path": "internal/tui/components/listviewport/listviewport.go",
    "content": "package listviewport\n\nimport (\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/viewport\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype Model struct {\n\tctx             context.ProgramContext\n\tviewport        viewport.Model\n\ttopBoundId      int\n\tbottomBoundId   int\n\tcurrId          int\n\tListItemHeight  int\n\tNumCurrentItems int\n\tNumTotalItems   int\n\tLastUpdated     time.Time\n\tCreatedAt       time.Time\n\tItemTypeLabel   string\n}\n\nfunc NewModel(\n\tctx context.ProgramContext,\n\tdimensions constants.Dimensions,\n\tlastUpdated time.Time,\n\tcreatedAt time.Time,\n\titemTypeLabel string,\n\tnumItems, listItemHeight int,\n) Model {\n\tmodel := Model{\n\t\tctx:             ctx,\n\t\tNumCurrentItems: numItems,\n\t\tListItemHeight:  listItemHeight,\n\t\tcurrId:          0,\n\t\tviewport: viewport.New(\n\t\t\tviewport.WithWidth(dimensions.Width),\n\t\t\tviewport.WithHeight(dimensions.Height),\n\t\t),\n\t\ttopBoundId:    0,\n\t\tItemTypeLabel: itemTypeLabel,\n\t\tLastUpdated:   lastUpdated,\n\t\tCreatedAt:     createdAt,\n\t}\n\tmodel.bottomBoundId = utils.Min(\n\t\tmodel.NumCurrentItems-1,\n\t\tmodel.getNumPrsPerPage()-1,\n\t)\n\treturn model\n}\n\nfunc (m *Model) SetNumItems(numItems int) {\n\tm.NumCurrentItems = numItems\n\tm.bottomBoundId = utils.Min(m.NumCurrentItems-1, m.getNumPrsPerPage()-1)\n}\n\nfunc (m *Model) SetTotalItems(total int) {\n\tm.NumTotalItems = total\n}\n\nfunc (m *Model) SetItemHeight(height int) {\n\tm.ListItemHeight = height\n}\n\nfunc (m *Model) SyncViewPort(content string) {\n\tm.viewport.SetContent(content)\n}\n\nfunc (m *Model) getNumPrsPerPage() int {\n\tif m.ListItemHeight == 0 {\n\t\treturn 0\n\t}\n\treturn m.viewport.Height() / m.ListItemHeight\n}\n\nfunc (m *Model) ResetCurrItem() {\n\tm.currId = 0\n\tm.viewport.GotoTop()\n}\n\nfunc (m *Model) GetCurrItem() int {\n\treturn m.currId\n}\n\nfunc (m *Model) NextItem() int {\n\tatBottomOfViewport := m.currId >= m.bottomBoundId\n\tif atBottomOfViewport {\n\t\tm.topBoundId += 1\n\t\tm.bottomBoundId += 1\n\t\tm.viewport.ScrollDown(m.ListItemHeight)\n\t}\n\n\tnewId := utils.Min(m.currId+1, m.NumCurrentItems-1)\n\tnewId = utils.Max(newId, 0)\n\tm.currId = newId\n\treturn m.currId\n}\n\nfunc (m *Model) PrevItem() int {\n\tatTopOfViewport := m.currId < m.topBoundId\n\tif atTopOfViewport {\n\t\tm.topBoundId -= 1\n\t\tm.bottomBoundId -= 1\n\t\tm.viewport.ScrollUp(m.ListItemHeight)\n\t}\n\n\tm.currId = utils.Max(m.currId-1, 0)\n\treturn m.currId\n}\n\nfunc (m *Model) FirstItem() int {\n\tm.currId = 0\n\tm.viewport.GotoTop()\n\treturn m.currId\n}\n\nfunc (m *Model) LastItem() int {\n\tm.currId = m.NumCurrentItems - 1\n\tm.viewport.GotoBottom()\n\treturn m.currId\n}\n\nfunc (m *Model) SetDimensions(dimensions constants.Dimensions) {\n\tm.viewport.SetHeight(max(0, dimensions.Height))\n\tm.viewport.SetWidth(max(0, dimensions.Width))\n}\n\nfunc (m *Model) View() string {\n\tviewport := m.viewport.View()\n\treturn lipgloss.NewStyle().\n\t\tWidth(m.viewport.Width()).\n\t\tMaxWidth(m.viewport.Width()).\n\t\tRender(\n\t\t\tviewport,\n\t\t)\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = *ctx\n}\n"
  },
  {
    "path": "internal/tui/components/notificationrow/data.go",
    "content": "package notificationrow\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\n// PR/Issue state constants from GitHub API\nconst (\n\tStateOpen   = \"OPEN\"\n\tStateClosed = \"CLOSED\"\n\tStateMerged = \"MERGED\"\n)\n\ntype Data struct {\n\tNotification        data.NotificationData\n\tNewCommentsCount    int    // Number of new comments since last read\n\tSubjectState        string // State of the PR/Issue (OPEN, CLOSED, MERGED)\n\tIsDraft             bool   // Whether PR is a draft\n\tActor               string // Username of the user who triggered the notification\n\tActivityDescription string // Human-readable description of the activity (e.g., \"@user commented on this PR\")\n\tResolvedUrl         string // Async-resolved URL (e.g., for CheckSuite -> specific workflow run)\n}\n\nfunc (d Data) GetTitle() string {\n\t// Sanitize title: remove carriage returns and other control characters\n\t// that can corrupt terminal rendering (e.g., GitHub sometimes returns\n\t// titles with trailing \\r characters)\n\ttitle := d.Notification.Subject.Title\n\ttitle = strings.ReplaceAll(title, \"\\r\", \"\")\n\ttitle = strings.ReplaceAll(title, \"\\n\", \" \")\n\treturn strings.TrimSpace(title)\n}\n\nfunc (d Data) GetRepoNameWithOwner() string {\n\treturn d.Notification.Repository.FullName\n}\n\nfunc (d Data) GetNumber() int {\n\tsubject := d.Notification.Subject\n\tif subject.Type == \"PullRequest\" || subject.Type == \"Issue\" {\n\t\tnumStr := extractNumberFromUrl(subject.Url)\n\t\tif num, err := strconv.Atoi(numStr); err == nil {\n\t\t\treturn num\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc (d Data) GetUrl() string {\n\tsubject := d.Notification.Subject\n\tbaseUrl := repoBaseUrl(d.Notification.Repository)\n\n\tswitch subject.Type {\n\tcase \"PullRequest\":\n\t\treturn fmt.Sprintf(\"%s/pull/%s\", baseUrl, extractNumberFromUrl(subject.Url))\n\tcase \"Issue\":\n\t\treturn fmt.Sprintf(\"%s/issues/%s\", baseUrl, extractNumberFromUrl(subject.Url))\n\tcase \"Discussion\":\n\t\tnum := extractNumberFromUrl(subject.Url)\n\t\tif num != \"\" {\n\t\t\treturn fmt.Sprintf(\"%s/discussions/%s\", baseUrl, num)\n\t\t}\n\t\treturn fmt.Sprintf(\"%s/discussions\", baseUrl)\n\tcase \"Release\":\n\t\treturn fmt.Sprintf(\"%s/releases\", baseUrl)\n\tcase \"Commit\":\n\t\treturn fmt.Sprintf(\"%s/commits\", baseUrl)\n\tcase \"CheckSuite\":\n\t\tif d.ResolvedUrl != \"\" {\n\t\t\treturn d.ResolvedUrl\n\t\t}\n\t\treturn fmt.Sprintf(\"%s/actions\", baseUrl)\n\tdefault:\n\t\treturn baseUrl\n\t}\n}\n\n// repoBaseUrl returns the base HTML URL for a repository.\n// It prefers Repository.HtmlUrl (which includes the correct host for GitHub Enterprise),\n// falling back to https://github.com/<FullName> if HtmlUrl is empty.\nfunc repoBaseUrl(repo data.NotificationRepository) string {\n\tif repo.HtmlUrl != \"\" {\n\t\treturn strings.TrimRight(repo.HtmlUrl, \"/\")\n\t}\n\treturn fmt.Sprintf(\"https://github.com/%s\", repo.FullName)\n}\n\nfunc (d Data) GetUpdatedAt() time.Time {\n\treturn d.Notification.UpdatedAt\n}\n\nfunc (d Data) GetCreatedAt() time.Time {\n\treturn d.Notification.UpdatedAt\n}\n\nfunc (d Data) GetId() string {\n\treturn d.Notification.Id\n}\n\nfunc (d Data) GetSubjectType() string {\n\treturn d.Notification.Subject.Type\n}\n\nfunc (d Data) GetReason() string {\n\treturn d.Notification.Reason\n}\n\nfunc (d Data) IsUnread() bool {\n\treturn d.Notification.Unread\n}\n\nfunc (d Data) GetLatestCommentUrl() string {\n\treturn d.Notification.Subject.LatestCommentUrl\n}\n\n// extractNumberFromUrl extracts the last path segment (typically a number) from an API URL\nfunc extractNumberFromUrl(apiUrl string) string {\n\tif apiUrl == \"\" {\n\t\treturn \"\"\n\t}\n\tfor i := len(apiUrl) - 1; i >= 0; i-- {\n\t\tif apiUrl[i] == '/' {\n\t\t\treturn apiUrl[i+1:]\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// GenerateActivityDescription creates a human-readable description of the notification activity\nfunc GenerateActivityDescription(reason, subjectType, actor string) string {\n\tswitch reason {\n\tcase \"comment\":\n\t\tif actor != \"\" {\n\t\t\tswitch subjectType {\n\t\t\tcase \"PullRequest\":\n\t\t\t\treturn fmt.Sprintf(\"@%s commented on this pull request\", actor)\n\t\t\tcase \"Issue\":\n\t\t\t\treturn fmt.Sprintf(\"@%s commented on this issue\", actor)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Sprintf(\"@%s commented\", actor)\n\t\t\t}\n\t\t}\n\t\treturn \"New comment\"\n\tcase \"review_requested\":\n\t\tif actor != \"\" {\n\t\t\treturn fmt.Sprintf(\"@%s requested your review\", actor)\n\t\t}\n\t\treturn \"Review requested\"\n\tcase \"mention\":\n\t\tif actor != \"\" {\n\t\t\treturn fmt.Sprintf(\"@%s mentioned you\", actor)\n\t\t}\n\t\treturn \"You were mentioned\"\n\tcase \"author\":\n\t\treturn \"Activity on your thread\"\n\tcase \"assign\":\n\t\treturn \"You were assigned\"\n\tcase \"state_change\":\n\t\tswitch subjectType {\n\t\tcase \"PullRequest\":\n\t\t\treturn \"Pull request state changed\"\n\t\tcase \"Issue\":\n\t\t\treturn \"Issue state changed\"\n\t\tdefault:\n\t\t\treturn \"State changed\"\n\t\t}\n\tcase \"ci_activity\":\n\t\treturn \"CI activity\"\n\tcase \"subscribed\":\n\t\tif actor != \"\" {\n\t\t\tswitch subjectType {\n\t\t\tcase \"PullRequest\":\n\t\t\t\treturn fmt.Sprintf(\"@%s commented on this pull request\", actor)\n\t\t\tcase \"Issue\":\n\t\t\t\treturn fmt.Sprintf(\"@%s commented on this issue\", actor)\n\t\t\tdefault:\n\t\t\t\treturn \"Activity on subscribed thread\"\n\t\t\t}\n\t\t}\n\t\treturn \"Activity on subscribed thread\"\n\tcase \"team_mention\":\n\t\treturn \"Your team was mentioned\"\n\tcase \"security_alert\":\n\t\treturn \"Security vulnerability detected\"\n\tdefault:\n\t\tif actor != \"\" {\n\t\t\treturn fmt.Sprintf(\"@%s triggered this notification\", actor)\n\t\t}\n\t\treturn \"\"\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/notificationrow/data_test.go",
    "content": "package notificationrow\n\nimport (\n\t\"testing\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\nfunc TestExtractNumberFromUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tapiUrl   string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"empty URL returns empty string\",\n\t\t\tapiUrl:   \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"PR API URL extracts number\",\n\t\t\tapiUrl:   \"https://api.github.com/repos/owner/repo/pulls/123\",\n\t\t\texpected: \"123\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Issue API URL extracts number\",\n\t\t\tapiUrl:   \"https://api.github.com/repos/owner/repo/issues/456\",\n\t\t\texpected: \"456\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Discussion API URL extracts number\",\n\t\t\tapiUrl:   \"https://api.github.com/repos/owner/repo/discussions/789\",\n\t\t\texpected: \"789\",\n\t\t},\n\t\t{\n\t\t\tname:     \"URL with no slashes returns empty\",\n\t\t\tapiUrl:   \"no-slashes\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"URL ending with slash returns empty\",\n\t\t\tapiUrl:   \"https://api.github.com/repos/owner/repo/\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"single segment after slash\",\n\t\t\tapiUrl:   \"/123\",\n\t\t\texpected: \"123\",\n\t\t},\n\t\t{\n\t\t\tname:     \"large number\",\n\t\t\tapiUrl:   \"https://api.github.com/repos/owner/repo/pulls/999999\",\n\t\t\texpected: \"999999\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := extractNumberFromUrl(tt.apiUrl)\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"extractNumberFromUrl(%q) = %q, want %q\", tt.apiUrl, result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetNumber(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected int\n\t}{\n\t\t{\n\t\t\tname: \"PullRequest returns extracted number\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/pulls/123\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 123,\n\t\t},\n\t\t{\n\t\t\tname: \"Issue returns extracted number\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Issue\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/issues/456\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 456,\n\t\t},\n\t\t{\n\t\t\tname: \"Discussion returns 0\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Discussion\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/discussions/789\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"Release returns 0\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Release\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/releases/v1.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"empty URL returns 0\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"non-numeric segment returns 0\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/pulls/abc\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetNumber()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetNumber() = %d, want %d\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"PullRequest constructs correct URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/pulls/123\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/pull/123\",\n\t\t},\n\t\t{\n\t\t\tname: \"Issue constructs correct URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Issue\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/issues/456\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/issues/456\",\n\t\t},\n\t\t{\n\t\t\tname: \"Discussion with number constructs correct URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Discussion\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/discussions/789\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/discussions/789\",\n\t\t},\n\t\t{\n\t\t\tname: \"Discussion with empty URL falls back to discussions page\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Discussion\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/discussions\",\n\t\t},\n\t\t{\n\t\t\tname: \"Release constructs releases URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Release\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/releases/12345\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/releases\",\n\t\t},\n\t\t{\n\t\t\tname: \"Commit constructs commits URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Commit\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/commits/abc123\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/commits\",\n\t\t},\n\t\t{\n\t\t\tname: \"CheckSuite links to actions page when ResolvedUrl not set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"CheckSuite\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/actions\",\n\t\t},\n\t\t{\n\t\t\tname: \"CheckSuite uses ResolvedUrl when available\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"CheckSuite\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tResolvedUrl: \"https://github.com/owner/repo/actions/runs/12345678\",\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/actions/runs/12345678\",\n\t\t},\n\t\t{\n\t\t\tname: \"unknown type falls back to repo URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"UnknownType\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/something\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"handles org/repo with special characters\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/my-org/my-repo/pulls/1\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"my-org/my-repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://github.com/my-org/my-repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/my-org/my-repo/pull/1\",\n\t\t},\n\t\t// GitHub Enterprise tests\n\t\t{\n\t\t\tname: \"GHE: PullRequest uses enterprise host\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://ghe.company.com/api/v3/repos/org/repo/pulls/42\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo/pull/42\",\n\t\t},\n\t\t{\n\t\t\tname: \"GHE: Issue uses enterprise host\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Issue\",\n\t\t\t\t\t\tUrl:  \"https://ghe.company.com/api/v3/repos/org/repo/issues/99\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo/issues/99\",\n\t\t},\n\t\t{\n\t\t\tname: \"GHE: CheckSuite uses enterprise host\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"CheckSuite\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo/actions\",\n\t\t},\n\t\t{\n\t\t\tname: \"GHE: unknown type falls back to enterprise repo URL\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"UnknownType\",\n\t\t\t\t\t\tUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"GHE: HtmlUrl with trailing slash is trimmed\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://ghe.company.com/api/v3/repos/org/repo/pulls/1\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"org/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"https://ghe.company.com/org/repo/\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://ghe.company.com/org/repo/pull/1\",\n\t\t},\n\t\t// Fallback when HtmlUrl is empty\n\t\t{\n\t\t\tname: \"empty HtmlUrl falls back to github.com\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t\tUrl:  \"https://api.github.com/repos/owner/repo/pulls/7\",\n\t\t\t\t\t},\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t\tHtmlUrl:  \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/owner/repo/pull/7\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetUrl()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetUrl() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestIsUnread(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"unread notification returns true\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tUnread: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"read notification returns false\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tUnread: false,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.IsUnread()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"IsUnread() = %v, want %v\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetReason(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns comment reason\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: \"comment\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"comment\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns mention reason\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: \"mention\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"mention\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns subscribed reason\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: \"subscribed\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"subscribed\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns review_requested reason\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: \"review_requested\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"review_requested\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns empty string when not set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetReason()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetReason() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetLatestCommentUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns latest comment URL when set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tLatestCommentUrl: \"https://api.github.com/repos/owner/repo/issues/comments/123456\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://api.github.com/repos/owner/repo/issues/comments/123456\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns empty string when not set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tLatestCommentUrl: \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetLatestCommentUrl()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetLatestCommentUrl() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetTitle(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns subject title\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tTitle: \"Fix bug in authentication\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Fix bug in authentication\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns empty string when not set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tTitle: \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"strips trailing carriage return\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tTitle: \"Set creation URL of worker settings\\r\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Set creation URL of worker settings\",\n\t\t},\n\t\t{\n\t\t\tname: \"strips embedded carriage returns\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tTitle: \"Line one\\r\\nLine two\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Line one Line two\",\n\t\t},\n\t\t{\n\t\t\tname: \"trims whitespace\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tTitle: \"  Title with spaces  \",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Title with spaces\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetTitle()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetTitle() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetRepoNameWithOwner(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns full repository name\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns org/repo format\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\t\tFullName: \"my-organization/my-repository\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"my-organization/my-repository\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetRepoNameWithOwner()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetRepoNameWithOwner() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetSubjectType(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns PullRequest type\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"PullRequest\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"PullRequest\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns Issue type\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Issue\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Issue\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns Discussion type\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: \"Discussion\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"Discussion\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetSubjectType()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetSubjectType() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetId(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     Data\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"returns notification ID\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tId: \"123456789\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"123456789\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns empty string when not set\",\n\t\t\tdata: Data{\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tId: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.data.GetId()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetId() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGenerateActivityDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\treason      string\n\t\tsubjectType string\n\t\tactor       string\n\t\texpected    string\n\t}{\n\t\t// comment reason\n\t\t{\n\t\t\tname:        \"comment on PR with actor\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"octocat\",\n\t\t\texpected:    \"@octocat commented on this pull request\",\n\t\t},\n\t\t{\n\t\t\tname:        \"comment on Issue with actor\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"octocat\",\n\t\t\texpected:    \"@octocat commented on this issue\",\n\t\t},\n\t\t{\n\t\t\tname:        \"comment on other type with actor\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"Discussion\",\n\t\t\tactor:       \"octocat\",\n\t\t\texpected:    \"@octocat commented\",\n\t\t},\n\t\t{\n\t\t\tname:        \"comment without actor\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"New comment\",\n\t\t},\n\n\t\t// review_requested reason\n\t\t{\n\t\t\tname:        \"review requested with actor\",\n\t\t\treason:      \"review_requested\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"reviewer\",\n\t\t\texpected:    \"@reviewer requested your review\",\n\t\t},\n\t\t{\n\t\t\tname:        \"review requested without actor\",\n\t\t\treason:      \"review_requested\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Review requested\",\n\t\t},\n\n\t\t// mention reason\n\t\t{\n\t\t\tname:        \"mention with actor\",\n\t\t\treason:      \"mention\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"commenter\",\n\t\t\texpected:    \"@commenter mentioned you\",\n\t\t},\n\t\t{\n\t\t\tname:        \"mention without actor\",\n\t\t\treason:      \"mention\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"You were mentioned\",\n\t\t},\n\n\t\t// author reason\n\t\t{\n\t\t\tname:        \"author reason\",\n\t\t\treason:      \"author\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"someone\",\n\t\t\texpected:    \"Activity on your thread\",\n\t\t},\n\n\t\t// assign reason\n\t\t{\n\t\t\tname:        \"assign reason\",\n\t\t\treason:      \"assign\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"assigner\",\n\t\t\texpected:    \"You were assigned\",\n\t\t},\n\n\t\t// state_change reason\n\t\t{\n\t\t\tname:        \"state change on PR\",\n\t\t\treason:      \"state_change\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Pull request state changed\",\n\t\t},\n\t\t{\n\t\t\tname:        \"state change on Issue\",\n\t\t\treason:      \"state_change\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Issue state changed\",\n\t\t},\n\t\t{\n\t\t\tname:        \"state change on other type\",\n\t\t\treason:      \"state_change\",\n\t\t\tsubjectType: \"Discussion\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"State changed\",\n\t\t},\n\n\t\t// ci_activity reason\n\t\t{\n\t\t\tname:        \"CI activity\",\n\t\t\treason:      \"ci_activity\",\n\t\t\tsubjectType: \"CheckSuite\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"CI activity\",\n\t\t},\n\n\t\t// subscribed reason\n\t\t{\n\t\t\tname:        \"subscribed PR with actor\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"contributor\",\n\t\t\texpected:    \"@contributor commented on this pull request\",\n\t\t},\n\t\t{\n\t\t\tname:        \"subscribed Issue with actor\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"contributor\",\n\t\t\texpected:    \"@contributor commented on this issue\",\n\t\t},\n\t\t{\n\t\t\tname:        \"subscribed other type with actor\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"Discussion\",\n\t\t\tactor:       \"contributor\",\n\t\t\texpected:    \"Activity on subscribed thread\",\n\t\t},\n\t\t{\n\t\t\tname:        \"subscribed without actor\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Activity on subscribed thread\",\n\t\t},\n\n\t\t// team_mention reason\n\t\t{\n\t\t\tname:        \"team mention\",\n\t\t\treason:      \"team_mention\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Your team was mentioned\",\n\t\t},\n\n\t\t// security_alert reason\n\t\t{\n\t\t\tname:        \"security alert\",\n\t\t\treason:      \"security_alert\",\n\t\t\tsubjectType: \"RepositoryVulnerabilityAlert\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"Security vulnerability detected\",\n\t\t},\n\n\t\t// unknown reason\n\t\t{\n\t\t\tname:        \"unknown reason with actor\",\n\t\t\treason:      \"unknown_reason\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"someone\",\n\t\t\texpected:    \"@someone triggered this notification\",\n\t\t},\n\t\t{\n\t\t\tname:        \"unknown reason without actor\",\n\t\t\treason:      \"unknown_reason\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"\",\n\t\t},\n\t\t{\n\t\t\tname:        \"empty reason without actor\",\n\t\t\treason:      \"\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\tactor:       \"\",\n\t\t\texpected:    \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := GenerateActivityDescription(tt.reason, tt.subjectType, tt.actor)\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GenerateActivityDescription(%q, %q, %q) = %q, want %q\",\n\t\t\t\t\ttt.reason, tt.subjectType, tt.actor, result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/notificationrow/notificationrow.go",
    "content": "package notificationrow\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype Notification struct {\n\tCtx  *context.ProgramContext\n\tData *Data\n}\n\nfunc (n *Notification) ToTableRow() table.Row {\n\treturn table.Row{\n\t\tn.renderType(),\n\t\tn.renderTitleBlock(),\n\t\tn.renderActivity(),\n\t\tn.renderUpdatedAt(),\n\t}\n}\n\nfunc (n *Notification) getTextStyle() lipgloss.Style {\n\treturn components.GetIssueTextStyle(n.Ctx)\n}\n\n// getReadAwareStyle returns the text style for notifications.\n// Read/unread status is indicated by the blue dot, not text color.\nfunc (n *Notification) getReadAwareStyle() lipgloss.Style {\n\treturn n.getTextStyle()\n}\n\nfunc (n *Notification) renderType() string {\n\tstyle := lipgloss.NewStyle()\n\tisUnread := n.Data.IsUnread()\n\n\t// Icons are always colored - only the blue dot indicates unread status\n\tvar icon string\n\tswitch n.Data.GetSubjectType() {\n\tcase \"PullRequest\":\n\t\t// Use state-based icons/colors matching prrow.go\n\t\tswitch n.Data.SubjectState {\n\t\tcase \"MERGED\":\n\t\t\tstyle = style.Foreground(n.Ctx.Styles.Colors.MergedPR)\n\t\t\ticon = constants.MergedIcon\n\t\tcase \"CLOSED\":\n\t\t\tstyle = style.Foreground(n.Ctx.Styles.Colors.ClosedPR)\n\t\t\ticon = constants.ClosedIcon\n\t\tdefault: // OPEN or unknown (not yet fetched)\n\t\t\tif n.Data.IsDraft {\n\t\t\t\tstyle = style.Foreground(n.Ctx.Theme.FaintText)\n\t\t\t\ticon = constants.DraftIcon\n\t\t\t} else {\n\t\t\t\tstyle = style.Foreground(n.Ctx.Styles.Colors.OpenPR)\n\t\t\t\ticon = constants.OpenIcon\n\t\t\t}\n\t\t}\n\tcase \"Issue\":\n\t\t// Use state-based icons/colors matching issuerow.go\n\t\tif n.Data.SubjectState == \"CLOSED\" {\n\t\t\ticon = \"\"\n\t\t\tstyle = style.Foreground(n.Ctx.Styles.Colors.ClosedPR)\n\t\t} else {\n\t\t\ticon = \"\"\n\t\t\tstyle = style.Foreground(n.Ctx.Styles.Colors.OpenIssue)\n\t\t}\n\tcase \"Discussion\":\n\t\ticon = \"\"\n\t\tstyle = style.Foreground(\n\t\t\tcompat.AdaptiveColor{Light: lipgloss.Color(\"#000000\"), Dark: lipgloss.Color(\"#ffffff\")},\n\t\t)\n\tcase \"Release\":\n\t\ticon = \"\"\n\t\tstyle = style.Foreground(\n\t\t\tcompat.AdaptiveColor{Light: lipgloss.Color(\"#0969da\"), Dark: lipgloss.Color(\"#58a6ff\")},\n\t\t)\n\tcase \"Commit\":\n\t\ticon = \"\"\n\t\tstyle = style.Foreground(n.Ctx.Theme.SecondaryText)\n\tcase \"CheckSuite\":\n\t\t// Parse title to determine workflow status (similar to gitify approach)\n\t\ttitle := strings.ToLower(n.Data.GetTitle())\n\t\tswitch {\n\t\tcase strings.Contains(title, \"failed\"):\n\t\t\ticon = constants.FailureIcon\n\t\t\tstyle = style.Foreground(n.Ctx.Theme.ErrorText)\n\t\tcase strings.Contains(title, \"succeeded\"):\n\t\t\ticon = constants.SuccessIcon\n\t\t\tstyle = style.Foreground(n.Ctx.Theme.SuccessText)\n\t\tcase strings.Contains(title, \"cancelled\"), strings.Contains(title, \"canceled\"):\n\t\t\ticon = constants.WorkflowRunIcon\n\t\t\tstyle = style.Foreground(n.Ctx.Theme.FaintText)\n\t\tcase strings.Contains(title, \"skipped\"):\n\t\t\ticon = constants.WorkflowRunIcon\n\t\t\tstyle = style.Foreground(n.Ctx.Theme.FaintText)\n\t\tdefault:\n\t\t\ticon = constants.WorkflowRunIcon\n\t\t\tstyle = style.Foreground(n.Ctx.Theme.WarningText)\n\t\t}\n\tcase \"RepositoryVulnerabilityAlert\":\n\t\ticon = constants.SecurityIcon\n\t\tstyle = style.Foreground(n.Ctx.Theme.ErrorText)\n\tdefault:\n\t\t// Generic notification icon for unknown types\n\t\ticon = constants.NotificationIcon\n\t\tstyle = style.Foreground(n.Ctx.Theme.SecondaryText)\n\t}\n\n\t// Use raw ANSI codes without reset to preserve parent background colors\n\ticonPrefix := utils.GetStylePrefix(style)\n\n\t// Always render 3 lines to match the Title column (repo, title, activity)\n\t// This ensures proper background color when row is selected\n\t// Line 1: icon\n\t// Line 2: blue dot (unread) or empty\n\t// Line 3: empty\n\tif isUnread {\n\t\tdotPrefix := utils.GetStylePrefix(lipgloss.NewStyle().Foreground(lipgloss.Color(\"33\")))\n\t\treturn iconPrefix + icon + \"\\n\" + dotPrefix + constants.DotIcon + \"\\n\"\n\t}\n\treturn iconPrefix + icon + \"\\n\\n\"\n}\n\n// renderTitleBlock returns a 3-line block:\n// Line 1: repo/name #number [bookmark icon if bookmarked]\n// Line 2: Title (bold for unread)\n// Line 3: Activity description\n// Note: Truncation is handled dynamically by the table component based on actual column width\n// Note: Uses raw ANSI codes without resets to preserve parent background colors\nfunc (n *Notification) renderTitleBlock() string {\n\t// Line 1: repo #number (secondary color, no ANSI reset to preserve background)\n\t// Read/unread status is indicated by the blue dot, not text color\n\trepoStyle := lipgloss.NewStyle().Foreground(n.Ctx.Theme.SecondaryText)\n\trepoPrefix := utils.GetStylePrefix(repoStyle)\n\trepo := n.Data.GetRepoNameWithOwner()\n\tnumber := n.Data.GetNumber()\n\tline1 := repo\n\tif number > 0 {\n\t\tline1 = fmt.Sprintf(\"%s #%d\", repo, number)\n\t}\n\t// Add bookmark icon if bookmarked (using raw ANSI for warning color)\n\tif data.GetBookmarkStore().IsBookmarked(n.Data.GetId()) {\n\t\tbookmarkPrefix := utils.GetStylePrefix(\n\t\t\tlipgloss.NewStyle().Foreground(n.Ctx.Theme.WarningText),\n\t\t)\n\t\tline1 = line1 + \" \" + bookmarkPrefix + \"\"\n\t}\n\tline1Rendered := repoPrefix + line1\n\n\t// Line 2: Title (bold for unread)\n\ttitleStyle := n.getReadAwareStyle()\n\tif n.Data.IsUnread() {\n\t\ttitleStyle = titleStyle.Bold(true)\n\t}\n\ttitlePrefix := utils.GetStylePrefix(titleStyle)\n\ttitle := n.Data.GetTitle()\n\tline2Rendered := titlePrefix + title\n\n\t// Line 3: Activity description (no ANSI reset)\n\tline3 := n.Data.ActivityDescription\n\tif line3 == \"\" {\n\t\t// Fallback to reason-based description\n\t\tline3 = n.getReasonDescription()\n\t}\n\tactivityPrefix := utils.GetStylePrefix(lipgloss.NewStyle().Foreground(n.Ctx.Theme.FaintText))\n\tvar line3Rendered string\n\tif strings.HasPrefix(line3, \"@\") {\n\t\t// Style the @username with ActorText for better contrast\n\t\tactorPrefix := utils.GetStylePrefix(lipgloss.NewStyle().Foreground(n.Ctx.Theme.ActorText))\n\t\tif idx := strings.Index(line3, \" \"); idx > 0 {\n\t\t\tline3Rendered = actorPrefix + line3[:idx] + activityPrefix + line3[idx:]\n\t\t} else {\n\t\t\tline3Rendered = actorPrefix + line3\n\t\t}\n\t} else {\n\t\tline3Rendered = activityPrefix + line3\n\t}\n\n\treturn line1Rendered + \"\\n\" + line2Rendered + \"\\n\" + line3Rendered\n}\n\n// getReasonDescription returns a fallback description based on notification reason\nfunc (n *Notification) getReasonDescription() string {\n\treason := n.Data.GetReason()\n\tsubjectType := n.Data.GetSubjectType()\n\n\tswitch reason {\n\tcase \"review_requested\":\n\t\treturn \"Review requested\"\n\tcase \"subscribed\":\n\t\treturn \"Activity on subscribed thread\"\n\tcase \"mention\":\n\t\treturn \"You were mentioned\"\n\tcase \"author\":\n\t\treturn \"Activity on your thread\"\n\tcase \"comment\":\n\t\tswitch subjectType {\n\t\tcase \"PullRequest\":\n\t\t\treturn \"New comment on pull request\"\n\t\tcase \"Issue\":\n\t\t\treturn \"New comment on issue\"\n\t\t}\n\t\treturn \"New comment\"\n\tcase \"assign\":\n\t\treturn \"You were assigned\"\n\tcase \"state_change\":\n\t\treturn \"State changed\"\n\tcase \"ci_activity\":\n\t\treturn \"CI activity\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// renderActivity shows the new comments count with icon\n// Returns 3 lines to match Title column for proper background highlighting\nfunc (n *Notification) renderActivity() string {\n\tif n.Data.NewCommentsCount <= 0 {\n\t\treturn \"\\n\\n\"\n\t}\n\t// Use raw ANSI foreground codes without reset to avoid breaking row background\n\t// White foreground for count, green foreground for icon\n\twhite := \"\\x1b[97m\" // Bright white\n\tgreen := \"\\x1b[32m\" // Green\n\treturn white + fmt.Sprintf(\n\t\t\"+%d \",\n\t\tn.Data.NewCommentsCount,\n\t) + green + constants.CommentsIcon + \"\\n\\n\"\n}\n\n// renderUpdatedAt returns the time since last update\n// Returns 3 lines to match Title column for proper background highlighting\nfunc (n *Notification) renderUpdatedAt() string {\n\ttimeFormat := n.Ctx.Config.Defaults.DateFormat\n\n\tupdatedAtOutput := \"\"\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\t// Use non-breaking space (U+00A0) to prevent wrap\n\t\tupdatedAtOutput = utils.TimeElapsed(n.Data.GetUpdatedAt()) + \"\\u00A0ago\"\n\t} else {\n\t\tupdatedAtOutput = n.Data.GetUpdatedAt().Format(timeFormat)\n\t}\n\n\t// Use raw ANSI codes without reset to preserve parent background colors\n\tstylePrefix := utils.GetStylePrefix(n.getReadAwareStyle())\n\treturn stylePrefix + updatedAtOutput + \"\\n\\n\"\n}\n"
  },
  {
    "path": "internal/tui/components/notificationrow/notificationrow_test.go",
    "content": "package notificationrow\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\nfunc TestGetReasonDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\treason      string\n\t\tsubjectType string\n\t\texpected    string\n\t}{\n\t\t// review_requested\n\t\t{\n\t\t\tname:        \"review_requested\",\n\t\t\treason:      \"review_requested\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"Review requested\",\n\t\t},\n\t\t// subscribed\n\t\t{\n\t\t\tname:        \"subscribed PR\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"Activity on subscribed thread\",\n\t\t},\n\t\t{\n\t\t\tname:        \"subscribed Issue\",\n\t\t\treason:      \"subscribed\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\texpected:    \"Activity on subscribed thread\",\n\t\t},\n\t\t// mention\n\t\t{\n\t\t\tname:        \"mention\",\n\t\t\treason:      \"mention\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\texpected:    \"You were mentioned\",\n\t\t},\n\t\t// author\n\t\t{\n\t\t\tname:        \"author\",\n\t\t\treason:      \"author\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"Activity on your thread\",\n\t\t},\n\t\t// comment\n\t\t{\n\t\t\tname:        \"comment on PR\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"New comment on pull request\",\n\t\t},\n\t\t{\n\t\t\tname:        \"comment on Issue\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\texpected:    \"New comment on issue\",\n\t\t},\n\t\t{\n\t\t\tname:        \"comment on other type\",\n\t\t\treason:      \"comment\",\n\t\t\tsubjectType: \"Discussion\",\n\t\t\texpected:    \"New comment\",\n\t\t},\n\t\t// assign\n\t\t{\n\t\t\tname:        \"assign\",\n\t\t\treason:      \"assign\",\n\t\t\tsubjectType: \"Issue\",\n\t\t\texpected:    \"You were assigned\",\n\t\t},\n\t\t// state_change\n\t\t{\n\t\t\tname:        \"state_change PR\",\n\t\t\treason:      \"state_change\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"State changed\",\n\t\t},\n\t\t// ci_activity\n\t\t{\n\t\t\tname:        \"ci_activity\",\n\t\t\treason:      \"ci_activity\",\n\t\t\tsubjectType: \"CheckSuite\",\n\t\t\texpected:    \"CI activity\",\n\t\t},\n\t\t// unknown/empty\n\t\t{\n\t\t\tname:        \"unknown reason\",\n\t\t\treason:      \"unknown_reason\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"\",\n\t\t},\n\t\t{\n\t\t\tname:        \"empty reason\",\n\t\t\treason:      \"\",\n\t\t\tsubjectType: \"PullRequest\",\n\t\t\texpected:    \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tn := &Notification{\n\t\t\t\tData: &Data{\n\t\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\t\tReason: tt.reason,\n\t\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\t\tType: tt.subjectType,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tresult := n.getReasonDescription()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"getReasonDescription() = %q, want %q\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseCheckSuiteStatus(t *testing.T) {\n\t// Test that CheckSuite status parsing from title works correctly\n\t// This is tested indirectly through renderType, but we can verify\n\t// the title parsing logic\n\n\ttests := []struct {\n\t\tname             string\n\t\ttitle            string\n\t\texpectsFailed    bool\n\t\texpectsSuccess   bool\n\t\texpectsCancelled bool\n\t\texpectsSkipped   bool\n\t}{\n\t\t{\n\t\t\tname:          \"failed status\",\n\t\t\ttitle:         \"CI / build (push) failed\",\n\t\t\texpectsFailed: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"succeeded status\",\n\t\t\ttitle:          \"CI / build (push) succeeded\",\n\t\t\texpectsSuccess: true,\n\t\t},\n\t\t{\n\t\t\tname:             \"cancelled status\",\n\t\t\ttitle:            \"CI / build (push) cancelled\",\n\t\t\texpectsCancelled: true,\n\t\t},\n\t\t{\n\t\t\tname:             \"canceled status (US spelling)\",\n\t\t\ttitle:            \"CI / build (push) canceled\",\n\t\t\texpectsCancelled: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"skipped status\",\n\t\t\ttitle:          \"CI / build (push) skipped\",\n\t\t\texpectsSkipped: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"unknown status\",\n\t\t\ttitle: \"CI / build (push) running\",\n\t\t},\n\t\t{\n\t\t\tname:          \"case insensitive - FAILED\",\n\t\t\ttitle:         \"CI / build (push) FAILED\",\n\t\t\texpectsFailed: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"case insensitive - SUCCEEDED\",\n\t\t\ttitle:          \"CI / build (push) SUCCEEDED\",\n\t\t\texpectsSuccess: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttitleLower := strings.ToLower(tt.title)\n\n\t\t\tisFailed := strings.Contains(titleLower, \"failed\")\n\t\t\tisSuccess := strings.Contains(titleLower, \"succeeded\")\n\t\t\tisCancelled := strings.Contains(titleLower, \"cancelled\") ||\n\t\t\t\tstrings.Contains(titleLower, \"canceled\")\n\t\t\tisSkipped := strings.Contains(titleLower, \"skipped\")\n\n\t\t\tif tt.expectsFailed && !isFailed {\n\t\t\t\tt.Error(\"Expected failed to be detected\")\n\t\t\t}\n\t\t\tif tt.expectsSuccess && !isSuccess {\n\t\t\t\tt.Error(\"Expected succeeded to be detected\")\n\t\t\t}\n\t\t\tif tt.expectsCancelled && !isCancelled {\n\t\t\t\tt.Error(\"Expected cancelled/canceled to be detected\")\n\t\t\t}\n\t\t\tif tt.expectsSkipped && !isSkipped {\n\t\t\t\tt.Error(\"Expected skipped to be detected\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestRenderActivityOutput(t *testing.T) {\n\t// Test renderActivity output format\n\ttests := []struct {\n\t\tname             string\n\t\tnewCommentsCount int\n\t\texpectsEmpty     bool\n\t\texpectsCount     bool\n\t}{\n\t\t{\n\t\t\tname:             \"zero comments returns empty lines\",\n\t\t\tnewCommentsCount: 0,\n\t\t\texpectsEmpty:     true,\n\t\t},\n\t\t{\n\t\t\tname:             \"negative comments returns empty lines\",\n\t\t\tnewCommentsCount: -1,\n\t\t\texpectsEmpty:     true,\n\t\t},\n\t\t{\n\t\t\tname:             \"positive comments shows count\",\n\t\t\tnewCommentsCount: 5,\n\t\t\texpectsCount:     true,\n\t\t},\n\t\t{\n\t\t\tname:             \"single comment shows count\",\n\t\t\tnewCommentsCount: 1,\n\t\t\texpectsCount:     true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tn := &Notification{\n\t\t\t\tData: &Data{\n\t\t\t\t\tNewCommentsCount: tt.newCommentsCount,\n\t\t\t\t},\n\t\t\t}\n\t\t\tresult := n.renderActivity()\n\n\t\t\tif tt.expectsEmpty {\n\t\t\t\t// Should be just newlines (empty content with 3-line structure)\n\t\t\t\tif result != \"\\n\\n\" {\n\t\t\t\t\tt.Errorf(\"renderActivity() = %q, want empty lines\", result)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif tt.expectsCount {\n\t\t\t\t// Should contain the count\n\t\t\t\tif !strings.Contains(result, \"+\") {\n\t\t\t\t\tt.Errorf(\"renderActivity() = %q, should contain '+' for count\", result)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDataState(t *testing.T) {\n\t// Test that SubjectState and IsDraft are properly used\n\ttests := []struct {\n\t\tname         string\n\t\tsubjectState string\n\t\tisDraft      bool\n\t\tsubjectType  string\n\t}{\n\t\t{\n\t\t\tname:         \"open PR\",\n\t\t\tsubjectState: StateOpen,\n\t\t\tisDraft:      false,\n\t\t\tsubjectType:  \"PullRequest\",\n\t\t},\n\t\t{\n\t\t\tname:         \"draft PR\",\n\t\t\tsubjectState: StateOpen,\n\t\t\tisDraft:      true,\n\t\t\tsubjectType:  \"PullRequest\",\n\t\t},\n\t\t{\n\t\t\tname:         \"merged PR\",\n\t\t\tsubjectState: StateMerged,\n\t\t\tisDraft:      false,\n\t\t\tsubjectType:  \"PullRequest\",\n\t\t},\n\t\t{\n\t\t\tname:         \"closed PR\",\n\t\t\tsubjectState: StateClosed,\n\t\t\tisDraft:      false,\n\t\t\tsubjectType:  \"PullRequest\",\n\t\t},\n\t\t{\n\t\t\tname:         \"open Issue\",\n\t\t\tsubjectState: StateOpen,\n\t\t\tisDraft:      false,\n\t\t\tsubjectType:  \"Issue\",\n\t\t},\n\t\t{\n\t\t\tname:         \"closed Issue\",\n\t\t\tsubjectState: StateClosed,\n\t\t\tisDraft:      false,\n\t\t\tsubjectType:  \"Issue\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\td := Data{\n\t\t\t\tSubjectState: tt.subjectState,\n\t\t\t\tIsDraft:      tt.isDraft,\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: tt.subjectType,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Verify the data is set correctly\n\t\t\tif d.SubjectState != tt.subjectState {\n\t\t\t\tt.Errorf(\"SubjectState = %q, want %q\", d.SubjectState, tt.subjectState)\n\t\t\t}\n\t\t\tif d.IsDraft != tt.isDraft {\n\t\t\t\tt.Errorf(\"IsDraft = %v, want %v\", d.IsDraft, tt.isDraft)\n\t\t\t}\n\t\t\tif d.GetSubjectType() != tt.subjectType {\n\t\t\t\tt.Errorf(\"GetSubjectType() = %q, want %q\", d.GetSubjectType(), tt.subjectType)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestActivityDescriptionFallback(t *testing.T) {\n\t// Test that ActivityDescription is used when set, else falls back to reason\n\ttests := []struct {\n\t\tname                string\n\t\tactivityDescription string\n\t\treason              string\n\t\tsubjectType         string\n\t\texpectContains      string\n\t}{\n\t\t{\n\t\t\tname:                \"uses ActivityDescription when set\",\n\t\t\tactivityDescription: \"@user commented on this PR\",\n\t\t\treason:              \"comment\",\n\t\t\tsubjectType:         \"PullRequest\",\n\t\t\texpectContains:      \"@user commented\",\n\t\t},\n\t\t{\n\t\t\tname:                \"falls back to reason when ActivityDescription empty\",\n\t\t\tactivityDescription: \"\",\n\t\t\treason:              \"review_requested\",\n\t\t\tsubjectType:         \"PullRequest\",\n\t\t\texpectContains:      \"Review requested\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\td := Data{\n\t\t\t\tActivityDescription: tt.activityDescription,\n\t\t\t\tNotification: data.NotificationData{\n\t\t\t\t\tReason: tt.reason,\n\t\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\t\tType: tt.subjectType,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// When ActivityDescription is set, it should be used\n\t\t\tif tt.activityDescription != \"\" {\n\t\t\t\tif d.ActivityDescription != tt.activityDescription {\n\t\t\t\t\tt.Errorf(\n\t\t\t\t\t\t\"ActivityDescription = %q, want %q\",\n\t\t\t\t\t\td.ActivityDescription,\n\t\t\t\t\t\ttt.activityDescription,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/notificationssection/DESIGN.md",
    "content": "# Notifications Feature — Implementation & Design Summary\n\n## Overview\n\nThe notifications feature adds a new view to gh-dash that displays GitHub notifications, allowing users to triage their inbox directly from the terminal. The implementation follows the existing patterns established by the PR and Issue views.\n\n## Architecture\n\n### File Structure\n\n```\ninternal/\n├── data/\n│   ├── notificationapi.go       # GitHub API interactions for notifications\n│   ├── bookmarks.go             # Local bookmark storage (singleton)\n│   ├── donestore.go             # Timestamp-based Done tracking (singleton)\n│   ├── donestore_test.go        # Tests for Done store\n│   └── donestore_testing.go     # Test helpers (create/override DoneStore)\n├── tui/\n│   ├── keys/\n│   │   └── notificationKeys.go  # Key bindings specific to notifications\n│   └── components/\n│       ├── notificationrow/\n│       │   ├── data.go          # Data model implementing RowData interface\n│       │   ├── data_test.go     # Tests for data accessors\n│       │   ├── notificationrow.go # Row rendering for the table\n│       │   └── notificationrow_test.go # Tests for rendering logic\n│       ├── notificationssection/\n│       │   ├── notificationssection.go # Main section component\n│       │   ├── commands.go      # Tea commands (mark done, mark read, diff, checkout, etc.)\n│       │   ├── commands_test.go # Tests for command functions\n│       │   └── filters_test.go  # Tests for filter parsing\n│       └── notificationview/\n│           └── notificationview.go # Detail view in sidebar\n```\n\n### Key Design Decisions\n\n#### 1. Explicit View Action for Notifications\n\nUnlike PRs and Issues which auto-fetch content when selected, notifications require an explicit action (Enter key) to view content. This design choice exists because:\n\n- Viewing a notification marks it as read (GitHub API behavior)\n- Users should consciously decide when to mark something as read\n- Prevents accidental \"read\" marking when just browsing the list\n\nWhen a notification is selected but not yet viewed, a prompt is displayed in the Preview pane:\n\n```\n      Press [Enter] to view the PR\n      (Note: this will mark it as read)\n\n      Other Actions\n\n            [D]  mark as done\n            [m]  mark as read\n            [u]  unsubscribe\n            [b]  toggle bookmark\n            [t]  toggle filtering\n            [S]  sort by repo\n            [o]  open in browser\n        [Enter]  view\n```\n\n- Keys are displayed with a background highlight\n- Actions are displayed in green (success color)\n- The note about marking as read appears for all notification types\n- For PR/Issue types: \"Press Enter to view the PR/Issue\"\n- For other notification types (Discussion, Release, etc.): \"Press Enter to open in browser\"\n\n#### 2. Notification Data Flow\n\n```\nGitHub REST API\n      │\n      ▼\nnotificationapi.go (FetchNotifications)\n      │\n      ▼\nnotificationssection.go (stores []notificationrow.Data)\n      │\n      ├──▶ notificationrow.go (renders table rows)\n      │\n      └──▶ notificationview.go (renders sidebar detail)\n           OR\n           renderNotificationPrompt() (shows action prompt)\n```\n\n#### 3. Comment Count Tracking\n\nFor PR and Issue notifications, the system fetches additional data to show new comment counts:\n\n- Compares `LastReadAt` timestamp with comment timestamps\n- Displays count of comments made since user last read the notification\n- Scrolls to the latest comment when viewing PR/Issue notifications\n\n#### 4. Actor Display\n\nFor PR and Issue notifications, the username of the person who triggered the notification is displayed:\n\n- Fetches the author from `latest_comment_url` (the comment that triggered the notification)\n- Falls back to the PR/Issue author for new items without comments\n- Helps identify spam without needing to open the notification\n- Fetched alongside comment counts (no additional latency)\n- Color is configurable via `theme.colors.text.actor` (defaults to secondary text color)\n\n#### 5. Three-Line Row Layout\n\nEach notification row displays three lines of information:\n\n```\nrepo/name #123 🔖                        +5💬  2d ago\nTitle of the notification (bold if unread)\n@username commented on this pull request\n```\n\n(The 🔖 bookmark icon only appears if the notification is bookmarked)\n\n- **Line 1:** Repository name with issue/PR number, bookmark icon if bookmarked (SecondaryText color; bookmark icon in WarningText color)\n- **Line 2:** Notification title (PrimaryText, bold for unread notifications)\n- **Line 3:** Activity description (FaintText color, generated from reason, type, and actor)\n\nThe three lines use distinct colors to create visual hierarchy: line 1 is secondary, line 2 is primary/bold, and line 3 is faint.\n\n**Unread indicator:** A blue dot is displayed below the notification type icon for unread notifications. This is the sole indicator of read/unread status—text is not dimmed for read notifications.\n\nActivity descriptions are generated based on the notification reason:\n- `comment`: \"@username commented on this pull request/issue\"\n- `review_requested`: \"@username requested your review\" or \"Review requested\"\n- `mention`: \"@username mentioned you\"\n- `author`: \"Activity on your thread\"\n- `assign`: \"You were assigned\"\n- `state_change`: \"Pull request/Issue state changed\"\n- `ci_activity`: \"CI activity\"\n- `subscribed`: \"@username commented on this pull request/issue\"\n\n#### 6. Title Sanitization\n\nNotification titles from GitHub's API may contain control characters (e.g., trailing `\\r`) that corrupt terminal rendering. The `GetTitle()` method sanitizes titles by:\n- Removing carriage return characters (`\\r`)\n- Replacing newlines (`\\n`) with spaces\n- Trimming leading/trailing whitespace\n\n#### 7. Multi-Line Row Background\n\nThe table component applies cell styling to each line individually in multi-line content. This ensures the background color (for selected rows) extends properly across the entire cell.\n\nTo preserve parent background colors, row content uses raw ANSI escape codes for foreground styling without trailing reset sequences. The `utils.GetStylePrefix()` helper extracts ANSI codes from lipgloss styles while stripping the reset, preventing internal resets from breaking the cell's background color.\n\nTitle truncation is handled dynamically by the table component based on actual column width, with ellipsis added when content is truncated. This allows titles to adjust when the sidebar is shown/hidden.\n\n#### 8. Bookmark and Done Systems\n\nBoth bookmarks and Done status are tracked locally because GitHub’s API doesn’t provide these features.\n\n**Bookmarks** use the generic `NotificationIDStore` type in `data/bookmarks.go`:\n\n```go\ntype NotificationIDStore struct {\n    ids      map[string]bool\n    filePath string\n    // ... mutex, name for logging\n}\n```\n\n- Stored in `~/.local/state/gh-dash/bookmarks.json` as a JSON array of IDs\n- Accessed via `data.GetBookmarkStore()` singleton\n- Bookmarked notifications appear in the default inbox view even when read\n- Bookmarked notifications are styled as read (faint text) but show a bookmark indicator\n- When user explicitly searches `is:unread`, bookmarked+read items are excluded\n\n**Done tracking** uses its own `DoneStore` type in `data/donestore.go`, separate from the bookmark store. This is necessary because GitHub’s “mark as done” API (`DELETE /notifications/threads/{id}`) doesn’t actually delete notifications — they still appear in API responses with `all=true`. Without local tracking, Done notifications would reappear when filtering to `is:read` or `is:all`.\n\nThe DoneStore records timestamps, not just IDs:\n\n```go\ntype DoneStore struct {\n    entries  map[string]time.Time // id -> updatedAt when marked done\n    filePath string\n    // ... mutex\n}\n```\n\nWhen marking a notification as Done, the store records the notification’s current `updated_at` timestamp. When checking whether a notification is still Done, `IsDone(id, updatedAt)` compares the stored timestamp against the notification’s current `updated_at`: if the notification has been updated since it was Done (new comments, state changes, etc.), it resurfaces automatically. This prevents notifications with new activity from being permanently hidden.\n\n- Stored in `~/.local/state/gh-dash/done.json` as a JSON object mapping IDs to RFC 3339 timestamps: `{\"id\": \"2024-01-15T10:30:00Z\", ...}`\n- Accessed via `data.GetDoneStore()` singleton\n- Backward-compatible: loads the legacy format (plain JSON array of IDs) used by older versions; legacy entries are assigned the zero time and pruned on load\n- Persists across sessions and application restarts\n\n**Pruning:** On load, the DoneStore removes stale entries, to prevent the file from growing indefinitely. Entries older than 90 days are pruned — because those are unlikely to still appear in API responses. Zero-time entries (from the legacy format) are also pruned, since removing them from the store has the same effect as keeping them: `IsDone` returns false either way, so active notifications still resurface.\n\n**Pagination with local filtering:** Because Done notifications are filtered out locally after fetching from the API, a single page of results may yield very few visible notifications. To handle this, the fetch logic automatically requests additional pages from the API until the requested limit is reached or all pages are exhausted. This ensures users see a full page of results even when many notifications have been marked as Done.\n\n#### 9. Unsubscribe\n\nThe unsubscribe feature allows users to stop receiving notifications for a thread:\n\n- Uses GitHub's `DELETE /notifications/threads/{id}/subscription` API\n- Removes the subscription without marking the notification as Done\n- Useful for threads that are no longer relevant but shouldn't be deleted\n\n#### 10. State Management\n\nNotification state (read/unread, done) is tracked both:\n- Locally in the `notificationrow.Data` struct for immediate UI updates\n- Remotely via GitHub API calls for persistence\n\nThe `UpdateNotificationMsg` and `UpdateNotificationReadStateMsg` types propagate state changes through the Bubble Tea update cycle.\n\n**Session persistence for read notifications:** When a notification is marked as read (via `m` key or by viewing it), its ID is tracked in `sessionMarkedRead`. These notifications remain visible in the inbox even during automatic refreshes (e.g., when the terminal regains focus). They are only removed when:\n- The user performs a manual refresh (Refresh key)\n- The user quits and restarts the application\n- The notification is explicitly marked as Done\n\n**Session persistence for Done notifications:** When a notification is marked as Done, its ID is tracked in `sessionMarkedDone` in addition to being persisted to the DoneStore. The session map provides immediate filtering without waiting for the async DoneStore save to complete. Like `sessionMarkedRead`, it is cleared on manual refresh.\n\n#### 12. Command Architecture\n\nNotification commands are organized in `commands.go`, following the pattern established by `prssection` (which has `checkout.go`, `diff.go`). Commands fall into two categories:\n\n**Section methods** — Commands that operate on section state and are invoked via key handling in the section's `Update` method:\n- `markAsDone()` — Marks the current notification as Done (persists ID + `updated_at` timestamp to DoneStore). Important: This captures `updatedAt` _by value before_ the closure — because `GetCurrNotification()` returns a pointer into the `Notifications` slice, which may shift when other notifications are removed concurrently.\n- `markAllAsDone()` — Marks all visible notifications as Done (persists each ID + `updated_at` to DoneStore)\n- `markAsRead()` — Marks the current notification as read\n- `markAllAsRead()` — Marks all notifications as read\n- `unsubscribe()` — Unsubscribes from the current thread\n- `openInBrowser()` — Marks as read and opens in browser\n\n**Standalone functions** — Commands that require data from outside the section (e.g., the PR shown in the sidebar). These are called from `ui.go` with the necessary parameters:\n- `DiffPR(ctx, prNumber, repoName)` — Opens a diff view for a PR\n- `CheckoutPR(ctx, prNumber, repoName)` — Checks out a PR branch locally\n\nThis split exists because diff and checkout operate on the PR/Issue content shown in the `notificationView` sidebar, not the notification row itself. When viewing a PR notification, the sidebar displays the full PR details, and diff/checkout actions use that data. The section doesn't have access to this enriched data, so `ui.go` extracts the PR details from `notificationView` and passes them to the standalone functions.\n\nKey events are routed through `ui.go`, which either:\n1. Passes them to the section via `updateSection()` for section methods\n2. Handles them directly and calls standalone functions with the required data\n\n### Interface Compliance\n\n`notificationrow.Data` implements the `data.RowData` interface:\n\n```go\ntype RowData interface {\n    GetRepoNameWithOwner() string\n    GetNumber() int\n    GetTitle() string\n    GetUrl() string\n}\n```\n\n- `GetNumber()` extracts the PR/Issue number from the subject URL\n- `GetUrl()` constructs the GitHub web URL from the API URL\n\n### Styling Consistency\n\nCommon styling functions were extracted to `common/styles.go`:\n\n- `RenderPreviewHeader()` — renders the repo/type header line with background\n- `RenderPreviewTitle()` — renders the title block with background highlight\n\nThese are used by PR view, Issue view, notification view, and notification prompt for consistent appearance.\n\n### Table Column Alignment\n\nThe table component was extended to support per-column alignment via an `Align` property on the `Column` struct. This allows the comment count column to be right-aligned.\n\n## Key Bindings\n\n| Key | Action |\n|-----|--------|\n| D | Mark as done (removes from inbox) |\n| Alt+d | Mark all as done |\n| m | Mark as read |\n| M | Mark all as read |\n| u | Unsubscribe from thread |\n| b | Toggle bookmark |\n| t | Toggle smart filtering (filter to current repo) |\n| y | Copy PR/Issue number |\n| Y | Copy URL |\n| S | Sort by repository |\n| s | Switch to PRs view |\n| o | Open in browser |\n| Enter | View notification (fetches content, marks as read) |\n\n### PR/Issue Keybindings in Notifications View\n\nWhen viewing a PR notification in the preview pane, all PR-specific keybindings become available:\n\n| Key | Action |\n|-----|--------|\n| v | Approve PR |\n| a | Assign |\n| A | Unassign |\n| c | Comment |\n| d | View diff |\n| C/Space | Checkout branch |\n| x | Close PR |\n| X | Reopen PR |\n| W | Mark ready for review |\n| m | Merge PR |\n| u | Update from base branch |\n| w | Watch checks |\n| [ | Previous sidebar tab |\n| ] | Next sidebar tab |\n| e | Expand description |\n\nSimilarly, when viewing an Issue notification, Issue-specific keybindings are available:\n\n| Key | Action |\n|-----|--------|\n| L | Add/remove labels |\n| a | Assign |\n| A | Unassign |\n| c | Comment |\n| x | Close issue |\n| X | Reopen issue |\n\nThe `?` help display dynamically updates to show the applicable keybindings based on what type of notification content is being viewed.\n\n#### Confirmation Prompts for Destructive Actions\n\nWhen viewing a PR or Issue notification, destructive actions (close, reopen, merge, etc.) require confirmation before execution. This uses a footer-based confirmation mechanism separate from the section-level confirmation used in PR/Issue views:\n\n1. User presses action key (e.g., `x` for close)\n2. Footer displays: \"Are you sure you want to close PR #123? (y/N)\"\n3. User presses `y`, `Y`, or `Enter` to confirm, any other key cancels\n4. Action executes via the `tasks` package (same as PR/Issue views)\n\nThis design is necessary because:\n- The notification section doesn't understand PR/Issue-specific actions\n- PR/Issue data is stored in `notificationView`, not in the section\n- Actions operate on the notification's subject PR/Issue, not the notification itself\n\nThe confirmation state is managed by `notificationView.Model`:\n- `pendingAction` field tracks the pending action (e.g., \"pr_close\", \"issue_reopen\")\n- `SetPendingPRAction()` / `SetPendingIssueAction()` set the pending action and return the confirmation prompt text\n- `Update()` method handles confirmation key presses (y/Y/Enter to confirm, any other key cancels)\n- `onConfirmAction` callback is invoked when confirmed, which `ui.go` sets to `executeNotificationAction()`\n\nThis encapsulation keeps confirmation logic close to the view that displays it, while `ui.go` coordinates between the footer prompt and action execution.\n\n#### Custom Keybindings in Notifications View\n\nUser-defined keybindings (configured under `keybindings.prs` and `keybindings.issues` in `config.yml`) are also supported in the Notifications view. When a notification’s subject is a PR or Issue, the corresponding custom keybindings are recognized and dispatched.\n\nThe command template receives different fields depending on whether the sidebar has been opened:\n\n| State | PR template fields |\n|-------|-------------------|\n| Sidebar not open | `RepoName`, `PrNumber`, `RepoPath` |\n| Sidebar open | + `HeadRefName`, `BaseRefName`, `Author` |\n\n| State | Issue template fields |\n|-------|---------------------|\n| Sidebar not open | `RepoName`, `IssueNumber`, `RepoPath` |\n| Sidebar open | + `Author` |\n\nIf a template references a sidebar-only field (e.g., `{{.HeadRefName}}`) before the sidebar is opened, the template engine’s `missingkey=error` option produces an error message. This is intentional — users should open the notification first to populate the full data.\n\nThe implementation in `modelUtils.go` checks `notificationView.GetSubjectPR()` / `GetSubjectIssue()` and enriches the template fields map when the subject data is available. This avoids an extra API call — the sidebar fetch that already happened is reused.\n\n## Configuration\n\n### Search Section\n\nLike PRs and Issues, the Notifications view includes a search section (indicated by a magnifying glass icon 🔍) as the first tab. This serves as a scratchpad for one-off searches without modifying your configured sections.\n\n- Default filter: `archived:false`\n- Respects `smartFilteringAtLaunch`: when enabled and running from a git repository, the search automatically scopes to that repo\n- Use the `/` key to focus the search bar and enter custom queries\n- Supports all notification filters: `is:unread`, `is:read`, `repo:owner/name`, `reason:*`\n\n### Notification Sections\n\nNotifications support multiple configurable sections, similar to PRs and Issues. Each section appears as a tab and filters notifications by reason:\n\n```yaml\nnotificationsSections:\n  - title: All\n    filters: \"\"\n  - title: Created\n    filters: \"reason:author\"\n  - title: Participating\n    filters: \"reason:participating\"\n  - title: Mentioned\n    filters: \"reason:mention\"\n  - title: Review Requested\n    filters: \"reason:review-requested\"\n  - title: Assigned\n    filters: \"reason:assign\"\n  - title: Subscribed\n    filters: \"reason:subscribed\"\n  - title: Team Mentioned\n    filters: \"reason:team-mention\"\n```\n\nThese are the default sections. Users can customize by defining their own `notificationsSections` in `config.yml`.\n\n#### Reason Filters\n\nThe `reason:` filter matches GitHub's notification reason field:\n\n| Filter | Description |\n|--------|-------------|\n| `reason:author` | Activity on threads you created |\n| `reason:comment` | Someone commented on a thread you're subscribed to |\n| `reason:mention` | You were @mentioned |\n| `reason:review-requested` | Your review was requested on a PR |\n| `reason:assign` | You were assigned |\n| `reason:subscribed` | Activity on threads you're watching |\n| `reason:team-mention` | Your team was @mentioned |\n| `reason:state-change` | Thread state changed (merged, closed, etc.) |\n| `reason:ci-activity` | CI workflow activity |\n| `reason:participating` | Meta-filter: expands to author, comment, mention, review-requested, assign, state-change |\n\nReason filters are applied client-side after fetching from GitHub's API.\n\n### Fetch Limit\n\nThe initial fetch limit is controlled by `defaults.notificationsLimit` (default: 20, matching PRs and Issues). Additional notifications are fetched automatically as the user scrolls through the list.\n\n```yaml\ndefaults:\n  notificationsLimit: 20\n```\n\n### Smart Filtering\n\nNotifications respect the global `smartFilteringAtLaunch` setting (enabled by default). When enabled and running from within a git repository, notifications are automatically scoped to that repository. The search bar displays `repo:owner/name` to indicate this filtering.\n\nUsers can:\n- Press `t` to toggle filtering on/off for the current session\n- Manually edit the search bar to remove or replace the `repo:` filter; submitting with Enter syncs the smart filter state to match\n- Set `smartFilteringAtLaunch: false` in config to disable this behavior globally\n\n#### 11. CheckSuite URL Resolution\n\nGitHub's API returns `subject.url=null` for CheckSuite notifications, making it impossible to directly link to the specific workflow run. To work around this:\n\n1. Initially, CheckSuite notifications link to the repository's `/actions` page as a fallback\n2. Asynchronously, we fetch recent workflow runs from `/repos/{owner}/{repo}/actions/runs`\n3. We find the workflow run closest in time to the notification's `updated_at` timestamp\n4. Once resolved, the notification's URL is updated to point to the specific workflow run\n\nThis async resolution uses the existing `UpdateNotificationUrlMsg` message type, following the same pattern as async comment count fetching for PRs and Issues.\n\n## Limitations\n\n- **Mark as Unread**: GitHub's REST API does not support marking notifications as unread, so this feature is not available. Bookmarks provide a workaround by keeping items visible in the inbox.\n- **Discussion/Release Content**: Only PR and Issue notifications can display detailed content in the sidebar; other types open directly in the browser.\n- **Local State Persistence**: Bookmarks and Done status are stored locally (`~/.local/state/gh-dash/`) and are not synced across machines or with GitHub.\n- **Done Notifications in API**: GitHub’s “mark as Done” doesn’t delete notifications — they still appear in API responses with `all=true`. We track Done IDs with timestamps locally to filter them out and detect new activity. Entries older than 90 days are pruned on startup.\n- **Server-Side Reason Filtering**: GitHub's notification API does not support filtering by reason on the server side. Reason filters are applied client-side after fetching notifications, which means all notifications are fetched before filtering.\n"
  },
  {
    "path": "internal/tui/components/notificationssection/commands.go",
    "content": "package notificationssection\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/cli/go-gh/v2/pkg/browser\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\n// markNotificationDoneFunc is the function used to mark a notification as done\n// via the GitHub API. It is a variable so tests can override it.\nvar markNotificationDoneFunc = data.MarkNotificationDone\n\nfunc (m *Model) markAsDone() tea.Cmd {\n\tnotification := m.GetCurrNotification()\n\tif notification == nil {\n\t\treturn nil\n\t}\n\n\tnotificationId := notification.GetId()\n\tupdatedAt := notification.Notification.UpdatedAt\n\ttaskId := fmt.Sprintf(\"notification_done_%s\", notificationId)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Marking notification as done\",\n\t\tFinishedText: \"Notification marked as done\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := markNotificationDoneFunc(notificationId)\n\t\tif err == nil {\n\t\t\t// Persist to done store so it stays hidden across sessions\n\t\t\tdata.GetDoneStore().MarkDone(notificationId, updatedAt)\n\t\t}\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         err,\n\t\t\tMsg: UpdateNotificationMsg{\n\t\t\t\tId:        notificationId,\n\t\t\t\tIsRemoved: err == nil,\n\t\t\t},\n\t\t}\n\t})\n}\n\n// markAllAsDone marks all currently visible notifications in this section as done.\n// \"All\" refers to the notifications currently loaded in m.Notifications, not all\n// notifications on GitHub.\nfunc (m *Model) markAllAsDone() tea.Cmd {\n\tif len(m.Notifications) == 0 {\n\t\treturn nil\n\t}\n\n\tcount := len(m.Notifications)\n\ttaskId := \"notification_done_all\"\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Marking %d notifications as done\", count),\n\t\tFinishedText: fmt.Sprintf(\"%d notifications marked as done\", count),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\n\ttype doneEntry struct {\n\t\tid        string\n\t\tupdatedAt time.Time\n\t}\n\tentries := make([]doneEntry, 0, count)\n\tfor _, n := range m.Notifications {\n\t\tentries = append(entries, doneEntry{n.GetId(), n.Notification.UpdatedAt})\n\t}\n\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\t// Mark each notification as done (delete it)\n\t\tdoneStore := data.GetDoneStore()\n\t\tvar lastErr error\n\t\tfor _, e := range entries {\n\t\t\tif err := data.MarkNotificationDone(e.id); err != nil {\n\t\t\t\tlastErr = err\n\t\t\t} else {\n\t\t\t\t// Persist to done store so it stays hidden across sessions\n\t\t\t\tdoneStore.MarkDone(e.id, e.updatedAt)\n\t\t\t}\n\t\t}\n\n\t\tif lastErr != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   m.Id,\n\t\t\t\tSectionType: SectionType,\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tErr:         lastErr,\n\t\t\t}\n\t\t}\n\n\t\t// Clear all notifications after marking as done\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         nil,\n\t\t\tMsg:         ClearAllNotificationsMsg{},\n\t\t}\n\t})\n}\n\nfunc (m *Model) markAllAsRead() tea.Cmd {\n\ttaskId := \"notification_read_all\"\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Marking all notifications as read\",\n\t\tFinishedText: \"All notifications marked as read\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := data.MarkAllNotificationsRead()\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   m.Id,\n\t\t\t\tSectionType: SectionType,\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tErr:         err,\n\t\t\t}\n\t\t}\n\n\t\t// Update all notifications to read state\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         nil,\n\t\t\tMsg:         MarkAllAsReadMsg{},\n\t\t}\n\t})\n}\n\ntype (\n\t// RefetchNotificationsMsg signals that notifications should be refetched from the API\n\tRefetchNotificationsMsg struct{}\n\t// ClearAllNotificationsMsg signals that all notifications should be removed from the local list\n\t// This is sent after successfully marking all notifications as done\n\tClearAllNotificationsMsg struct{}\n\t// MarkAllAsReadMsg signals that all notifications should be updated to read state in the UI\n\t// This is sent after successfully calling the mark-all-read API\n\tMarkAllAsReadMsg struct{}\n)\n\nfunc (m *Model) markAsRead() tea.Cmd {\n\tnotification := m.GetCurrNotification()\n\tif notification == nil {\n\t\treturn nil\n\t}\n\n\tnotificationId := notification.GetId()\n\ttaskId := fmt.Sprintf(\"notification_read_%s\", notificationId)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Marking notification as read\",\n\t\tFinishedText: \"Notification marked as read\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := data.MarkNotificationRead(notificationId)\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         err,\n\t\t\tMsg: UpdateNotificationReadStateMsg{\n\t\t\t\tId:     notificationId,\n\t\t\t\tUnread: false,\n\t\t\t},\n\t\t}\n\t})\n}\n\nfunc (m *Model) unsubscribe() tea.Cmd {\n\tnotification := m.GetCurrNotification()\n\tif notification == nil {\n\t\treturn nil\n\t}\n\n\tnotificationId := notification.GetId()\n\ttaskId := fmt.Sprintf(\"notification_unsubscribe_%s\", notificationId)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Unsubscribing from thread\",\n\t\tFinishedText: \"Unsubscribed from thread\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := data.UnsubscribeFromThread(notificationId)\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         err,\n\t\t\tMsg: UnsubscribedMsg{\n\t\t\t\tId: notificationId,\n\t\t\t},\n\t\t}\n\t})\n}\n\n// UnsubscribedMsg is sent when a notification thread is unsubscribed\ntype UnsubscribedMsg struct {\n\tId string\n}\n\n// UpdateNotificationReadStateMsg is sent when a notification's read state changes\ntype UpdateNotificationReadStateMsg struct {\n\tId     string\n\tUnread bool\n}\n\n// openInBrowser marks the current notification as read and opens it in the browser\nfunc (m *Model) openInBrowser() tea.Cmd {\n\tnotification := m.GetCurrNotification()\n\tif notification == nil {\n\t\treturn nil\n\t}\n\n\tnotificationId := notification.GetId()\n\tnotificationUrl := notification.GetUrl()\n\n\treturn tea.Batch(\n\t\tfunc() tea.Msg {\n\t\t\t_ = data.MarkNotificationRead(notificationId)\n\t\t\treturn UpdateNotificationReadStateMsg{\n\t\t\t\tId:     notificationId,\n\t\t\t\tUnread: false,\n\t\t\t}\n\t\t},\n\t\tfunc() tea.Msg {\n\t\t\tb := browser.New(\"\", os.Stdout, os.Stdin)\n\t\t\terr := b.Browse(notificationUrl)\n\t\t\tif err != nil {\n\t\t\t\treturn constants.ErrMsg{Err: err}\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t)\n}\n\n// CheckoutPR checks out a PR. This is a standalone function that can be called\n// from ui.go with the PR details from the notification view.\nfunc CheckoutPR(ctx *context.ProgramContext, prNumber int, repoName string) (tea.Cmd, error) {\n\trepoPath, ok := common.GetRepoLocalPath(repoName, ctx.Config.RepoPaths)\n\tif !ok {\n\t\treturn nil, errors.New(\n\t\t\t\"local path to repo not specified, set one in your config.yml under repoPaths\",\n\t\t)\n\t}\n\n\ttaskId := fmt.Sprintf(\"checkout_%d\", prNumber)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Checking out PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been checked out at %s\", prNumber, repoPath),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tc := exec.Command(\n\t\t\t\"gh\",\n\t\t\t\"pr\",\n\t\t\t\"checkout\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t)\n\t\tuserHomeDir, _ := os.UserHomeDir()\n\t\tif strings.HasPrefix(repoPath, \"~\") {\n\t\t\trepoPath = strings.Replace(repoPath, \"~\", userHomeDir, 1)\n\t\t}\n\n\t\tc.Dir = repoPath\n\t\terr := c.Run()\n\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t}), nil\n}\n"
  },
  {
    "path": "internal/tui/components/notificationssection/commands_test.go",
    "content": "package notificationssection\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\n// noopStartTask is a stub that returns nil for testing\nfunc noopStartTask(task context.Task) tea.Cmd {\n\treturn nil\n}\n\nfunc TestCheckoutPR(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tprNumber  int\n\t\trepoName  string\n\t\trepoPaths map[string]string\n\t\twantErr   bool\n\t\twantNil   bool\n\t}{\n\t\t{\n\t\t\tname:      \"returns error when repo path not configured\",\n\t\t\tprNumber:  123,\n\t\t\trepoName:  \"owner/repo\",\n\t\t\trepoPaths: map[string]string{},\n\t\t\twantErr:   true,\n\t\t\twantNil:   true,\n\t\t},\n\t\t{\n\t\t\tname:     \"returns command when repo path is configured\",\n\t\t\tprNumber: 123,\n\t\t\trepoName: \"owner/repo\",\n\t\t\trepoPaths: map[string]string{\n\t\t\t\t\"owner/repo\": \"/path/to/repo\",\n\t\t\t},\n\t\t\twantErr: false,\n\t\t\twantNil: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"returns command with tilde path\",\n\t\t\tprNumber: 456,\n\t\t\trepoName: \"my-org/my-repo\",\n\t\t\trepoPaths: map[string]string{\n\t\t\t\t\"my-org/my-repo\": \"~/projects/my-repo\",\n\t\t\t},\n\t\t\twantErr: false,\n\t\t\twantNil: false,\n\t\t},\n\t\t{\n\t\t\tname:      \"returns error for unconfigured repo even with other repos configured\",\n\t\t\tprNumber:  789,\n\t\t\trepoName:  \"other/repo\",\n\t\t\trepoPaths: map[string]string{\"owner/repo\": \"/path/to/repo\"},\n\t\t\twantErr:   true,\n\t\t\twantNil:   true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tRepoPaths: tt.repoPaths,\n\t\t\t\t},\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\n\t\t\tcmd, err := CheckoutPR(ctx, tt.prNumber, tt.repoName)\n\n\t\t\tif tt.wantErr && err == nil {\n\t\t\t\tt.Errorf(\"CheckoutPR() error = nil, want error\")\n\t\t\t}\n\t\t\tif !tt.wantErr && err != nil {\n\t\t\t\tt.Errorf(\"CheckoutPR() error = %v, want nil\", err)\n\t\t\t}\n\t\t\tif tt.wantNil && cmd != nil {\n\t\t\t\tt.Errorf(\"CheckoutPR() returned non-nil cmd, want nil\")\n\t\t\t}\n\t\t\tif !tt.wantNil && cmd == nil {\n\t\t\t\tt.Errorf(\"CheckoutPR() returned nil cmd, want non-nil\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCheckoutPRErrorMessage(t *testing.T) {\n\tctx := &context.ProgramContext{\n\t\tConfig: &config.Config{\n\t\t\tRepoPaths: map[string]string{},\n\t\t},\n\t\tStartTask: noopStartTask,\n\t}\n\n\t_, err := CheckoutPR(ctx, 123, \"owner/repo\")\n\n\tif err == nil {\n\t\tt.Fatal(\"CheckoutPR() expected error, got nil\")\n\t}\n\n\texpectedMsg := \"local path to repo not specified, set one in your config.yml under repoPaths\"\n\tif err.Error() != expectedMsg {\n\t\tt.Errorf(\"CheckoutPR() error = %q, want %q\", err.Error(), expectedMsg)\n\t}\n}\n\n// TestMarkAsDoneStoresCorrectTimestamp is a regression test for a\n// pointer-aliasing bug that occurred in markAsDone().\n//\n// GetCurrNotification() returns &m.Notifications[idx], a pointer into the\n// Notifications slice. When the closure later dereferences this pointer to\n// read UpdatedAt, the slice may have been modified (element removed via\n// append), causing the pointer to reference a different notification's data.\n//\n// The fix captures UpdatedAt by value before the closure. This test verifies\n// that the correct timestamp reaches the DoneStore even when the slice is\n// modified between command creation and execution.\nfunc TestMarkAsDoneStoresCorrectTimestamp(t *testing.T) {\n\t// Mock the API call to succeed without network access.\n\torigFunc := markNotificationDoneFunc\n\tmarkNotificationDoneFunc = func(string) error { return nil }\n\tdefer func() { markNotificationDoneFunc = origFunc }()\n\n\t// Set up a DoneStore backed by a temp file so we don't touch real state.\n\ttempDir, err := os.MkdirTemp(\"\", \"gh-dash-markdone-test\")\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to create temp dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(tempDir)\n\n\tstore := data.NewDoneStoreForTesting(filepath.Join(tempDir, \"done.json\"))\n\trestoreStore := data.OverrideDoneStoreForTesting(store)\n\tdefer restoreStore()\n\n\tt1 := time.Date(2026, 1, 15, 10, 0, 0, 0, time.UTC)\n\tt2 := time.Date(2026, 2, 20, 15, 30, 0, 0, time.UTC)\n\tt3 := time.Date(2026, 3, 1, 8, 0, 0, 0, time.UTC)\n\n\t// Build a minimal Model. A zero-value Table has cursor at index 0,\n\t// so GetCurrNotification() returns &m.Notifications[0].\n\tm := Model{\n\t\tNotifications: []notificationrow.Data{\n\t\t\t{Notification: data.NotificationData{Id: \"notif-A\", UpdatedAt: t1}},\n\t\t\t{Notification: data.NotificationData{Id: \"notif-B\", UpdatedAt: t2}},\n\t\t\t{Notification: data.NotificationData{Id: \"notif-C\", UpdatedAt: t3}},\n\t\t},\n\t\tsessionMarkedDone: make(map[string]bool),\n\t\tsessionMarkedRead: make(map[string]bool),\n\t}\n\tm.Ctx = &context.ProgramContext{\n\t\tStartTask: noopStartTask,\n\t}\n\n\t// Step 1: Call markAsDone(). This captures notif-A's ID and UpdatedAt\n\t// by value, before the closure.\n\tcmd := m.markAsDone()\n\tif cmd == nil {\n\t\tt.Fatal(\"markAsDone() returned nil cmd\")\n\t}\n\n\t// Step 2: Simulate the race — remove notif-A from the slice.\n\t// This shifts notif-B into position 0 and notif-C into position 1.\n\t// If the closure had captured a pointer instead of a value, it would\n\t// now read notif-B's UpdatedAt (t2) instead of notif-A's (t1).\n\tm.Notifications = append(m.Notifications[:0], m.Notifications[1:]...)\n\n\t// Step 3: Execute the command. tea.Batch returns a BatchMsg containing\n\t// the inner cmds; execute each one.\n\tbatchMsg := cmd()\n\tif cmds, ok := batchMsg.(tea.BatchMsg); ok {\n\t\tfor _, c := range cmds {\n\t\t\tif c != nil {\n\t\t\t\tc()\n\t\t\t}\n\t\t}\n\t}\n\n\t// Step 4: Verify the DoneStore received notif-A's original timestamp (t1),\n\t// not notif-B's (t2), which is what the shifted pointer would have read.\n\tif !store.IsDone(\"notif-A\", t1) {\n\t\tt.Error(\"DoneStore should have notif-A marked done at t1\")\n\t}\n\t// If the bug were present, t2 would have been stored instead of t1.\n\t// In that case, IsDone(\"notif-A\", t1) would still return true (t1 <= t2),\n\t// but IsDone with a time between t1 and t2 would incorrectly return true.\n\t// Use a more precise check: mark done at t1 means t1+1s should resurface\n\t// only if the stored timestamp is exactly t1.\n\tjustAfterT1 := t1.Add(1 * time.Second)\n\tif store.IsDone(\"notif-A\", justAfterT1) {\n\t\tt.Error(\n\t\t\t\"notif-A should resurface for activity after t1 (stored timestamp should be exactly t1)\",\n\t\t)\n\t}\n\t// That is the critical assertion: if the pointer-aliasing bug were present,\n\t// t2 would be stored, and activity at justAfterT1 would _not_ resurface\n\t// (because justAfterT1 < t2). The test would fail here.\n}\n"
  },
  {
    "path": "internal/tui/components/notificationssection/filters_test.go",
    "content": "package notificationssection\n\nimport (\n\t\"testing\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\nfunc TestParseNotificationFilters(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tsearch                string\n\t\twantReadState         data.NotificationReadState\n\t\twantIsDone            bool\n\t\twantExplicitUnread    bool\n\t\twantIncludeBookmarked bool\n\t\twantRepoCount         int\n\t}{\n\t\t{\n\t\t\tname:                  \"empty search defaults to unread with bookmarks\",\n\t\t\tsearch:                \"\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"explicit is:unread excludes bookmarks\",\n\t\t\tsearch:                \"is:unread\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    true,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"is:read excludes bookmarks\",\n\t\t\tsearch:                \"is:read\",\n\t\t\twantReadState:         data.NotificationStateRead,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"is:all excludes bookmarks\",\n\t\t\tsearch:                \"is:all\",\n\t\t\twantReadState:         data.NotificationStateAll,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"is:done sets IsDone flag\",\n\t\t\tsearch:                \"is:done\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            true,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"is:unread and is:read together becomes is:all\",\n\t\t\tsearch:                \"is:unread is:read\",\n\t\t\twantReadState:         data.NotificationStateAll,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t\t{\n\t\t\tname:                  \"repo filter is extracted\",\n\t\t\tsearch:                \"repo:owner/repo\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantRepoCount:         1,\n\t\t},\n\t\t{\n\t\t\tname:                  \"multiple repo filters\",\n\t\t\tsearch:                \"repo:owner/repo1 repo:owner/repo2\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantRepoCount:         2,\n\t\t},\n\t\t{\n\t\t\tname:                  \"combined filters\",\n\t\t\tsearch:                \"repo:owner/repo is:unread\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    true,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantRepoCount:         1,\n\t\t},\n\t\t{\n\t\t\tname:                  \"random text preserves defaults\",\n\t\t\tsearch:                \"some random search text\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantRepoCount:         0,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfilters := parseNotificationFilters(tt.search, false)\n\n\t\t\tif filters.ReadState != tt.wantReadState {\n\t\t\t\tt.Errorf(\"ReadState = %v, want %v\", filters.ReadState, tt.wantReadState)\n\t\t\t}\n\t\t\tif filters.IsDone != tt.wantIsDone {\n\t\t\t\tt.Errorf(\"IsDone = %v, want %v\", filters.IsDone, tt.wantIsDone)\n\t\t\t}\n\t\t\tif filters.ExplicitUnread != tt.wantExplicitUnread {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"ExplicitUnread = %v, want %v\",\n\t\t\t\t\tfilters.ExplicitUnread,\n\t\t\t\t\ttt.wantExplicitUnread,\n\t\t\t\t)\n\t\t\t}\n\t\t\tif filters.IncludeBookmarked != tt.wantIncludeBookmarked {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"IncludeBookmarked = %v, want %v\",\n\t\t\t\t\tfilters.IncludeBookmarked,\n\t\t\t\t\ttt.wantIncludeBookmarked,\n\t\t\t\t)\n\t\t\t}\n\t\t\tif len(filters.RepoFilters) != tt.wantRepoCount {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"RepoFilters count = %d, want %d\",\n\t\t\t\t\tlen(filters.RepoFilters),\n\t\t\t\t\ttt.wantRepoCount,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseReasonFilters(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsearch   string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"no reason filter\",\n\t\t\tsearch:   \"is:unread\",\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname:     \"single reason filter\",\n\t\t\tsearch:   \"reason:author\",\n\t\t\texpected: []string{data.ReasonAuthor},\n\t\t},\n\t\t{\n\t\t\tname:     \"multiple reason filters\",\n\t\t\tsearch:   \"reason:author reason:mention\",\n\t\t\texpected: []string{data.ReasonAuthor, data.ReasonMention},\n\t\t},\n\t\t{\n\t\t\tname:   \"reason:participating expands to multiple reasons\",\n\t\t\tsearch: \"reason:participating\",\n\t\t\texpected: []string{\n\t\t\t\tdata.ReasonAuthor,\n\t\t\t\tdata.ReasonComment,\n\t\t\t\tdata.ReasonMention,\n\t\t\t\tdata.ReasonReviewRequested,\n\t\t\t\tdata.ReasonAssign,\n\t\t\t\tdata.ReasonStateChange,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason:review-requested normalizes to review_requested\",\n\t\t\tsearch:   \"reason:review-requested\",\n\t\t\texpected: []string{data.ReasonReviewRequested},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason:team-mention normalizes to team_mention\",\n\t\t\tsearch:   \"reason:team-mention\",\n\t\t\texpected: []string{data.ReasonTeamMention},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason:ci-activity normalizes to ci_activity\",\n\t\t\tsearch:   \"reason:ci-activity\",\n\t\t\texpected: []string{data.ReasonCIActivity},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason:security-alert normalizes to security_alert\",\n\t\t\tsearch:   \"reason:security-alert\",\n\t\t\texpected: []string{data.ReasonSecurityAlert},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason:state-change normalizes to state_change\",\n\t\t\tsearch:   \"reason:state-change\",\n\t\t\texpected: []string{data.ReasonStateChange},\n\t\t},\n\t\t{\n\t\t\tname:     \"reason filter mixed with other text\",\n\t\t\tsearch:   \"is:unread reason:author some text\",\n\t\t\texpected: []string{data.ReasonAuthor},\n\t\t},\n\t\t{\n\t\t\tname:     \"direct reason values pass through\",\n\t\t\tsearch:   \"reason:subscribed reason:comment\",\n\t\t\texpected: []string{data.ReasonSubscribed, data.ReasonComment},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := parseReasonFilters(tt.search)\n\n\t\t\tif len(result) != len(tt.expected) {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"parseReasonFilters(%q) returned %d items, want %d\",\n\t\t\t\t\ttt.search,\n\t\t\t\t\tlen(result),\n\t\t\t\t\tlen(tt.expected),\n\t\t\t\t)\n\t\t\t\tt.Errorf(\"got: %v\", result)\n\t\t\t\tt.Errorf(\"want: %v\", tt.expected)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfor i, want := range tt.expected {\n\t\t\t\tif result[i] != want {\n\t\t\t\t\tt.Errorf(\n\t\t\t\t\t\t\"parseReasonFilters(%q)[%d] = %q, want %q\",\n\t\t\t\t\t\ttt.search,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\tresult[i],\n\t\t\t\t\t\twant,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseNotificationFiltersWithReasons(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tsearch          string\n\t\twantReasonCount int\n\t}{\n\t\t{\n\t\t\tname:            \"no reason filter\",\n\t\t\tsearch:          \"\",\n\t\t\twantReasonCount: 0,\n\t\t},\n\t\t{\n\t\t\tname:            \"single reason filter\",\n\t\t\tsearch:          \"reason:author\",\n\t\t\twantReasonCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:            \"reason:participating expands to 6 reasons\",\n\t\t\tsearch:          \"reason:participating\",\n\t\t\twantReasonCount: 6,\n\t\t},\n\t\t{\n\t\t\tname:            \"combined with other filters\",\n\t\t\tsearch:          \"is:unread repo:owner/repo reason:mention\",\n\t\t\twantReasonCount: 1,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfilters := parseNotificationFilters(tt.search, false)\n\t\t\tif len(filters.ReasonFilters) != tt.wantReasonCount {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"ReasonFilters count = %d, want %d\",\n\t\t\t\t\tlen(filters.ReasonFilters),\n\t\t\t\t\ttt.wantReasonCount,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseRepoFilters(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsearch   string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"no repo filter\",\n\t\t\tsearch:   \"is:unread\",\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname:     \"single repo filter\",\n\t\t\tsearch:   \"repo:owner/repo\",\n\t\t\texpected: []string{\"owner/repo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"multiple repo filters\",\n\t\t\tsearch:   \"repo:owner/repo1 repo:other/repo2\",\n\t\t\texpected: []string{\"owner/repo1\", \"other/repo2\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"repo filter with hyphen\",\n\t\t\tsearch:   \"repo:my-org/my-repo\",\n\t\t\texpected: []string{\"my-org/my-repo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"repo filter mixed with other text\",\n\t\t\tsearch:   \"is:unread repo:owner/repo some text\",\n\t\t\texpected: []string{\"owner/repo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"repo filter with underscore\",\n\t\t\tsearch:   \"repo:my_org/my_repo\",\n\t\t\texpected: []string{\"my_org/my_repo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"repo filter with numbers\",\n\t\t\tsearch:   \"repo:org123/repo456\",\n\t\t\texpected: []string{\"org123/repo456\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := parseRepoFilters(tt.search)\n\n\t\t\tif len(result) != len(tt.expected) {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"parseRepoFilters(%q) returned %d items, want %d\",\n\t\t\t\t\ttt.search,\n\t\t\t\t\tlen(result),\n\t\t\t\t\tlen(tt.expected),\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfor i, want := range tt.expected {\n\t\t\t\tif result[i] != want {\n\t\t\t\t\tt.Errorf(\n\t\t\t\t\t\t\"parseRepoFilters(%q)[%d] = %q, want %q\",\n\t\t\t\t\t\ttt.search,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\tresult[i],\n\t\t\t\t\t\twant,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseNotificationFiltersEdgeCases(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tsearch                string\n\t\twantReadState         data.NotificationReadState\n\t\twantIsDone            bool\n\t\twantExplicitUnread    bool\n\t\twantIncludeBookmarked bool\n\t}{\n\t\t{\n\t\t\tname:                  \"whitespace only preserves defaults\",\n\t\t\tsearch:                \"   \",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t},\n\t\t{\n\t\t\tname:                  \"mixed case is:UNREAD not recognized (case sensitive)\",\n\t\t\tsearch:                \"is:UNREAD\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false, // Not recognized due to case\n\t\t\twantIncludeBookmarked: true,  // Default when not recognized\n\t\t},\n\t\t{\n\t\t\tname:                  \"mixed case is:Read not recognized (case sensitive)\",\n\t\t\tsearch:                \"is:Read\",\n\t\t\twantReadState:         data.NotificationStateUnread, // Default when not recognized\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true, // Default when not recognized\n\t\t},\n\t\t{\n\t\t\tname:                  \"mixed case is:ALL not recognized (case sensitive)\",\n\t\t\tsearch:                \"is:ALL\",\n\t\t\twantReadState:         data.NotificationStateUnread, // Default when not recognized\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true, // Default when not recognized\n\t\t},\n\t\t{\n\t\t\tname:                  \"mixed case is:Done not recognized (case sensitive)\",\n\t\t\tsearch:                \"is:Done\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false, // Not recognized due to case\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: true,\n\t\t},\n\t\t{\n\t\t\tname:                  \"multiple spaces between filters\",\n\t\t\tsearch:                \"is:unread    repo:owner/repo\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    true,\n\t\t\twantIncludeBookmarked: false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"filter at end of string\",\n\t\t\tsearch:                \"some text is:read\",\n\t\t\twantReadState:         data.NotificationStateRead,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"is:done with is:all\",\n\t\t\tsearch:                \"is:done is:all\",\n\t\t\twantReadState:         data.NotificationStateAll,\n\t\t\twantIsDone:            true,\n\t\t\twantExplicitUnread:    false,\n\t\t\twantIncludeBookmarked: false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"duplicate is:unread\",\n\t\t\tsearch:                \"is:unread is:unread\",\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIsDone:            false,\n\t\t\twantExplicitUnread:    true,\n\t\t\twantIncludeBookmarked: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfilters := parseNotificationFilters(tt.search, false)\n\n\t\t\tif filters.ReadState != tt.wantReadState {\n\t\t\t\tt.Errorf(\"ReadState = %v, want %v\", filters.ReadState, tt.wantReadState)\n\t\t\t}\n\t\t\tif filters.IsDone != tt.wantIsDone {\n\t\t\t\tt.Errorf(\"IsDone = %v, want %v\", filters.IsDone, tt.wantIsDone)\n\t\t\t}\n\t\t\tif filters.ExplicitUnread != tt.wantExplicitUnread {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"ExplicitUnread = %v, want %v\",\n\t\t\t\t\tfilters.ExplicitUnread,\n\t\t\t\t\ttt.wantExplicitUnread,\n\t\t\t\t)\n\t\t\t}\n\t\t\tif filters.IncludeBookmarked != tt.wantIncludeBookmarked {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"IncludeBookmarked = %v, want %v\",\n\t\t\t\t\tfilters.IncludeBookmarked,\n\t\t\t\t\ttt.wantIncludeBookmarked,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseReasonFiltersEdgeCases(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsearch   string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"reason with mixed case passes through as-is\",\n\t\t\tsearch:   \"reason:AUTHOR\",\n\t\t\texpected: []string{\"AUTHOR\"}, // Case is preserved, not normalized to lowercase\n\t\t},\n\t\t{\n\t\t\tname:   \"reason:participating with other filters\",\n\t\t\tsearch: \"is:unread reason:participating repo:owner/repo\",\n\t\t\texpected: []string{\n\t\t\t\tdata.ReasonAuthor,\n\t\t\t\tdata.ReasonComment,\n\t\t\t\tdata.ReasonMention,\n\t\t\t\tdata.ReasonReviewRequested,\n\t\t\t\tdata.ReasonAssign,\n\t\t\t\tdata.ReasonStateChange,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"duplicate reason filters\",\n\t\t\tsearch:   \"reason:author reason:author\",\n\t\t\texpected: []string{data.ReasonAuthor, data.ReasonAuthor},\n\t\t},\n\t\t{\n\t\t\tname:     \"empty reason value\",\n\t\t\tsearch:   \"reason:\",\n\t\t\texpected: []string{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := parseReasonFilters(tt.search)\n\n\t\t\tif len(result) != len(tt.expected) {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"parseReasonFilters(%q) returned %d items, want %d\",\n\t\t\t\t\ttt.search,\n\t\t\t\t\tlen(result),\n\t\t\t\t\tlen(tt.expected),\n\t\t\t\t)\n\t\t\t\tt.Errorf(\"got: %v\", result)\n\t\t\t\tt.Errorf(\"want: %v\", tt.expected)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfor i, want := range tt.expected {\n\t\t\t\tif result[i] != want {\n\t\t\t\t\tt.Errorf(\n\t\t\t\t\t\t\"parseReasonFilters(%q)[%d] = %q, want %q\",\n\t\t\t\t\t\ttt.search,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\tresult[i],\n\t\t\t\t\t\twant,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseNotificationFiltersIncludeRead(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tsearch                string\n\t\tincludeRead           bool\n\t\twantReadState         data.NotificationReadState\n\t\twantIncludeBookmarked bool\n\t\twantExplicitUnread    bool\n\t}{\n\t\t{\n\t\t\tname:                  \"includeRead true with empty search defaults to all\",\n\t\t\tsearch:                \"\",\n\t\t\tincludeRead:           true,\n\t\t\twantReadState:         data.NotificationStateAll,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantExplicitUnread:    false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"includeRead false with empty search defaults to unread\",\n\t\t\tsearch:                \"\",\n\t\t\tincludeRead:           false,\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIncludeBookmarked: true,\n\t\t\twantExplicitUnread:    false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"includeRead true with explicit is:unread overrides to unread\",\n\t\t\tsearch:                \"is:unread\",\n\t\t\tincludeRead:           true,\n\t\t\twantReadState:         data.NotificationStateUnread,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantExplicitUnread:    true,\n\t\t},\n\t\t{\n\t\t\tname:                  \"includeRead true with explicit is:read overrides to read\",\n\t\t\tsearch:                \"is:read\",\n\t\t\tincludeRead:           true,\n\t\t\twantReadState:         data.NotificationStateRead,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantExplicitUnread:    false,\n\t\t},\n\t\t{\n\t\t\tname:                  \"includeRead true with random text defaults to all\",\n\t\t\tsearch:                \"some random text\",\n\t\t\tincludeRead:           true,\n\t\t\twantReadState:         data.NotificationStateAll,\n\t\t\twantIncludeBookmarked: false,\n\t\t\twantExplicitUnread:    false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfilters := parseNotificationFilters(tt.search, tt.includeRead)\n\n\t\t\tif filters.ReadState != tt.wantReadState {\n\t\t\t\tt.Errorf(\"ReadState = %v, want %v\", filters.ReadState, tt.wantReadState)\n\t\t\t}\n\t\t\tif filters.IncludeBookmarked != tt.wantIncludeBookmarked {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"IncludeBookmarked = %v, want %v\",\n\t\t\t\t\tfilters.IncludeBookmarked,\n\t\t\t\t\ttt.wantIncludeBookmarked,\n\t\t\t\t)\n\t\t\t}\n\t\t\tif filters.ExplicitUnread != tt.wantExplicitUnread {\n\t\t\t\tt.Errorf(\n\t\t\t\t\t\"ExplicitUnread = %v, want %v\",\n\t\t\t\t\tfilters.ExplicitUnread,\n\t\t\t\t\ttt.wantExplicitUnread,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/notificationssection/notificationssection.go",
    "content": "package notificationssection\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"slices\"\n\t\"sync\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nconst SectionType = \"notification\"\n\n// repoFilterRegex matches \"repo:owner/name\" patterns in search strings\nvar repoFilterRegex = regexp.MustCompile(`repo:([^\\s]+)`)\n\n// stateFilterRegex matches \"is:unread\", \"is:read\", \"is:done\", \"is:all\" patterns\nvar stateFilterRegex = regexp.MustCompile(`is:(unread|read|done|all)`)\n\n// reasonFilterRegex matches \"reason:value\" patterns in search strings\nvar reasonFilterRegex = regexp.MustCompile(`reason:([^\\s]+)`)\n\n// parseRepoFilters extracts repo:owner/name patterns from a search string\nfunc parseRepoFilters(search string) []string {\n\tmatches := repoFilterRegex.FindAllStringSubmatch(search, -1)\n\trepos := make([]string, 0, len(matches))\n\tfor _, match := range matches {\n\t\tif len(match) > 1 {\n\t\t\trepos = append(repos, match[1])\n\t\t}\n\t}\n\treturn repos\n}\n\n// NotificationFilters holds parsed notification filters\ntype NotificationFilters struct {\n\tRepoFilters       []string\n\tReasonFilters     []string // Notification reasons to filter by (e.g., \"author\", \"mention\")\n\tReadState         data.NotificationReadState\n\tIsDone            bool // If true, user asked for is:done which is not retrievable\n\tExplicitUnread    bool // If true, user explicitly typed \"is:unread\" (excludes bookmarked+read)\n\tIncludeBookmarked bool // If true, include bookmarked items even if read (default view)\n}\n\n// parseReasonFilters extracts reason:value patterns from a search string\n// Handles \"reason:participating\" as a meta-filter and normalizes hyphenated names\nfunc parseReasonFilters(search string) []string {\n\tmatches := reasonFilterRegex.FindAllStringSubmatch(search, -1)\n\treasons := make([]string, 0, len(matches))\n\tfor _, match := range matches {\n\t\tif len(match) > 1 {\n\t\t\treason := match[1]\n\t\t\t// Expand \"participating\" meta-filter to multiple reasons\n\t\t\tif reason == \"participating\" {\n\t\t\t\treasons = append(reasons,\n\t\t\t\t\tdata.ReasonAuthor,\n\t\t\t\t\tdata.ReasonComment,\n\t\t\t\t\tdata.ReasonMention,\n\t\t\t\t\tdata.ReasonReviewRequested,\n\t\t\t\t\tdata.ReasonAssign,\n\t\t\t\t\tdata.ReasonStateChange,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// Normalize hyphenated names to match GitHub API values\n\t\t\t\tswitch reason {\n\t\t\t\tcase \"review-requested\":\n\t\t\t\t\treasons = append(reasons, data.ReasonReviewRequested)\n\t\t\t\tcase \"team-mention\":\n\t\t\t\t\treasons = append(reasons, data.ReasonTeamMention)\n\t\t\t\tcase \"ci-activity\":\n\t\t\t\t\treasons = append(reasons, data.ReasonCIActivity)\n\t\t\t\tcase \"security-alert\":\n\t\t\t\t\treasons = append(reasons, data.ReasonSecurityAlert)\n\t\t\t\tcase \"state-change\":\n\t\t\t\t\treasons = append(reasons, data.ReasonStateChange)\n\t\t\t\tdefault:\n\t\t\t\t\treasons = append(reasons, reason)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn reasons\n}\n\n// parseNotificationFilters extracts all notification filters from search string.\n// When includeRead is true (the default config), the default read state is \"all\"\n// instead of \"unread\", matching GitHub's default behavior.\nfunc parseNotificationFilters(search string, includeRead bool) NotificationFilters {\n\tdefaultReadState := data.NotificationStateUnread\n\tif includeRead {\n\t\tdefaultReadState = data.NotificationStateAll\n\t}\n\tfilters := NotificationFilters{\n\t\tRepoFilters:       parseRepoFilters(search),\n\t\tReasonFilters:     parseReasonFilters(search),\n\t\tReadState:         defaultReadState,\n\t\tIsDone:            false,\n\t\tExplicitUnread:    false,\n\t\tIncludeBookmarked: !includeRead, // Only auto-include bookmarks when filtering to unread\n\t}\n\n\tmatches := stateFilterRegex.FindAllStringSubmatch(search, -1)\n\thasUnread := false\n\thasRead := false\n\thasDone := false\n\thasAll := false\n\n\tfor _, match := range matches {\n\t\tif len(match) > 1 {\n\t\t\tswitch match[1] {\n\t\t\tcase \"unread\":\n\t\t\t\thasUnread = true\n\t\t\tcase \"read\":\n\t\t\t\thasRead = true\n\t\t\tcase \"done\":\n\t\t\t\thasDone = true\n\t\t\tcase \"all\":\n\t\t\t\thasAll = true\n\t\t\t}\n\t\t}\n\t}\n\n\tif hasDone {\n\t\tfilters.IsDone = true\n\t}\n\n\tif hasAll || (hasUnread && hasRead) {\n\t\tfilters.ReadState = data.NotificationStateAll\n\t\tfilters.IncludeBookmarked = false // Explicit filter, don't auto-include bookmarks\n\t} else if hasRead {\n\t\tfilters.ReadState = data.NotificationStateRead\n\t\tfilters.IncludeBookmarked = false // Explicit filter, don't auto-include bookmarks\n\t} else if hasUnread {\n\t\t// User explicitly typed \"is:unread\" - don't include bookmarked+read items\n\t\tfilters.ReadState = data.NotificationStateUnread\n\t\tfilters.ExplicitUnread = true\n\t\tfilters.IncludeBookmarked = false\n\t}\n\t// Default case: ReadState = Unread, IncludeBookmarked = true\n\n\treturn filters\n}\n\ntype SortOrder int\n\nconst (\n\tSortByUpdated SortOrder = iota\n\tSortByRepo\n)\n\ntype Model struct {\n\tsection.BaseModel\n\tNotifications     []notificationrow.Data\n\tSortOrder         SortOrder\n\tlastSidebarOpen   bool\n\tsessionMarkedRead map[string]bool // IDs of notifications marked as read this session (kept visible until manual refresh)\n\tsessionMarkedDone map[string]bool // IDs of notifications marked as done this session (excluded until manual refresh)\n}\n\nfunc NewModel(\n\tid int,\n\tctx *context.ProgramContext,\n\tcfg config.NotificationsSectionConfig,\n\tlastUpdated time.Time,\n) Model {\n\tsectionCfg := cfg.ToSectionConfig()\n\n\tm := Model{}\n\tm.BaseModel = section.NewModel(\n\t\tctx,\n\t\tsection.NewSectionOptions{\n\t\t\tId:          id,\n\t\t\tConfig:      sectionCfg,\n\t\t\tType:        SectionType,\n\t\t\tColumns:     GetSectionColumns(ctx),\n\t\t\tSingular:    m.GetItemSingularForm(),\n\t\t\tPlural:      m.GetItemPluralForm(),\n\t\t\tLastUpdated: lastUpdated,\n\t\t\tCreatedAt:   lastUpdated,\n\t\t},\n\t)\n\t// Set 3-line content height for notification rows\n\tm.Table.SetContentHeight(3)\n\t// Respect smartFilteringAtLaunch - scope to current repo by default if enabled\n\tm.IsFilteredByCurrentRemote = ctx.Config.SmartFilteringAtLaunch\n\tm.SearchValue = m.GetSearchValue()\n\tm.SearchBar.SetValue(m.SearchValue)\n\tm.Notifications = []notificationrow.Data{}\n\tm.sessionMarkedRead = make(map[string]bool)\n\tm.sessionMarkedDone = make(map[string]bool)\n\n\treturn m\n}\n\nfunc (m *Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {\n\tvar cmd tea.Cmd\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tif m.IsSearchFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.SearchBar.SetValue(m.SearchValue)\n\t\t\t\tblinkCmd := m.SetIsSearching(false)\n\t\t\t\treturn m, blinkCmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tm.SearchValue = m.SearchBar.Value()\n\t\t\t\tm.SyncSmartFilterWithSearchValue()\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tif m.IsPromptConfirmationFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tcmd = m.SetIsPromptConfirmationShown(false)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tinput := m.PromptConfirmationBox.Value()\n\t\t\t\taction := m.GetPromptConfirmationAction()\n\t\t\t\tif input == \"\" || input == \"Y\" || input == \"y\" {\n\t\t\t\t\tswitch action {\n\t\t\t\t\tcase \"done\":\n\t\t\t\t\t\tcmd = m.markAsDone()\n\t\t\t\t\tcase \"done_all\":\n\t\t\t\t\t\tcmd = m.markAllAsDone()\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tblinkCmd := m.SetIsPromptConfirmationShown(false)\n\n\t\t\t\treturn m, tea.Batch(cmd, blinkCmd)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tswitch {\n\t\tcase key.Matches(msg, keys.NotificationKeys.MarkAsDone):\n\t\t\tif m.GetCurrRow() != nil {\n\t\t\t\tcmd = m.markAsDone()\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.MarkAsRead):\n\t\t\tif m.GetCurrRow() != nil {\n\t\t\t\tcmd = m.markAsRead()\n\t\t\t\tm.NextRow()\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.MarkAllAsRead):\n\t\t\tcmd = m.markAllAsRead()\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.Unsubscribe):\n\t\t\tif m.GetCurrRow() != nil {\n\t\t\t\tcmd = m.unsubscribe()\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.Open):\n\t\t\tif m.GetCurrRow() != nil {\n\t\t\t\tcmd = m.openInBrowser()\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.ToggleBookmark):\n\t\t\tif notification := m.GetCurrNotification(); notification != nil {\n\t\t\t\tdata.GetBookmarkStore().ToggleBookmark(notification.GetId())\n\t\t\t\t// Rebuild rows to update bookmark indicator\n\t\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\t}\n\t\t\treturn m, nil\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.SortByRepo):\n\t\t\tm.toggleSortOrder()\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\treturn m, nil\n\n\t\tcase key.Matches(msg, keys.NotificationKeys.ToggleSmartFiltering):\n\t\t\tif m.HasCurrentRepoNameInConfiguredFilter() || !m.HasRepoNameInConfiguredFilter() {\n\t\t\t\tm.IsFilteredByCurrentRemote = !m.IsFilteredByCurrentRemote\n\t\t\t}\n\t\t\tsearchValue := m.GetSearchValue()\n\t\t\tif m.SearchValue != searchValue {\n\t\t\t\tm.SearchValue = searchValue\n\t\t\t\tm.SearchBar.SetValue(searchValue)\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\t\t}\n\n\tcase UpdateNotificationMsg:\n\t\tif msg.IsRemoved {\n\t\t\tfor i, n := range m.Notifications {\n\t\t\t\tif n.GetId() == msg.Id {\n\t\t\t\t\tm.Notifications = append(m.Notifications[:i], m.Notifications[i+1:]...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Track as done so it doesn't reappear on refresh (GitHub API still returns it with all=true)\n\t\t\tm.sessionMarkedDone[msg.Id] = true\n\t\t\t// Also remove from sessionMarkedRead\n\t\t\tdelete(m.sessionMarkedRead, msg.Id)\n\t\t\tm.TotalCount = len(m.Notifications)\n\t\t\tm.SetIsLoading(false)\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\tm.UpdateTotalItemsCount(m.TotalCount)\n\t\t}\n\n\tcase UpdateNotificationReadStateMsg:\n\t\t// Update the notification's read state\n\t\tfor i := range m.Notifications {\n\t\t\tif m.Notifications[i].GetId() == msg.Id {\n\t\t\t\tm.Notifications[i].Notification.Unread = msg.Unread\n\t\t\t\t// Track notifications marked as read this session so they remain visible\n\t\t\t\tif !msg.Unread {\n\t\t\t\t\tm.sessionMarkedRead[msg.Id] = true\n\t\t\t\t}\n\t\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\tcase UpdateNotificationCommentsMsg:\n\t\t// Update the notification with fetched data\n\t\tlog.Debug(\"UpdateNotificationCommentsMsg received\", \"id\", msg.Id, \"count\",\n\t\t\tmsg.NewCommentsCount, \"state\", msg.SubjectState, \"actor\", msg.Actor)\n\t\tfor i := range m.Notifications {\n\t\t\tif m.Notifications[i].GetId() == msg.Id {\n\t\t\t\tm.Notifications[i].NewCommentsCount = msg.NewCommentsCount\n\t\t\t\tm.Notifications[i].SubjectState = msg.SubjectState\n\t\t\t\tm.Notifications[i].IsDraft = msg.IsDraft\n\t\t\t\tm.Notifications[i].Actor = msg.Actor\n\t\t\t\t// Generate activity description based on reason, type, and actor\n\t\t\t\tm.Notifications[i].ActivityDescription = notificationrow.GenerateActivityDescription(\n\t\t\t\t\tm.Notifications[i].GetReason(),\n\t\t\t\t\tm.Notifications[i].GetSubjectType(),\n\t\t\t\t\tmsg.Actor,\n\t\t\t\t)\n\t\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\t\tlog.Debug(\"Updated notification\", \"id\", msg.Id, \"count\",\n\t\t\t\t\tmsg.NewCommentsCount, \"state\", msg.SubjectState, \"actor\", msg.Actor)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\tcase UpdateNotificationUrlMsg:\n\t\t// Update the notification with async-resolved URL (e.g., for CheckSuite)\n\t\tlog.Debug(\"UpdateNotificationUrlMsg received\", \"id\", msg.Id, \"url\", msg.ResolvedUrl)\n\t\tfor i := range m.Notifications {\n\t\t\tif m.Notifications[i].GetId() == msg.Id {\n\t\t\t\tm.Notifications[i].ResolvedUrl = msg.ResolvedUrl\n\t\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\t\tlog.Debug(\"Updated notification URL\", \"id\", msg.Id, \"url\", msg.ResolvedUrl)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\tcase SectionNotificationsFetchedMsg:\n\t\tif m.LastFetchTaskId == msg.TaskId {\n\t\t\tif m.PageInfo != nil {\n\t\t\t\t// Append to existing notifications (pagination)\n\t\t\t\tm.Notifications = append(m.Notifications, msg.Notifications...)\n\t\t\t} else {\n\t\t\t\t// First page, replace\n\t\t\t\tm.Notifications = msg.Notifications\n\t\t\t}\n\t\t\tm.TotalCount = len(m.Notifications)\n\t\t\tm.PageInfo = &msg.PageInfo\n\t\t\tm.SetIsLoading(false)\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\tm.UpdateLastUpdated(time.Now())\n\t\t\tm.UpdateTotalItemsCount(m.TotalCount)\n\n\t\t\t// Start background fetches for comment counts (only for new notifications)\n\t\t\tfetchCmds := m.fetchCommentCountsForNotifications(msg.Notifications)\n\t\t\tcmd = tea.Batch(fetchCmds...)\n\t\t}\n\n\tcase ClearAllNotificationsMsg:\n\t\t// Clear all notifications after marking all as done, then refetch\n\t\tm.Notifications = []notificationrow.Data{}\n\t\tm.TotalCount = 0\n\t\tm.PageInfo = nil\n\t\tm.sessionMarkedDone = make(map[string]bool)\n\t\tm.SetIsLoading(true)\n\t\tm.Table.SetRows(m.BuildRows())\n\t\tm.UpdateTotalItemsCount(0)\n\t\tcmd = tea.Batch(m.FetchNextPageSectionRows()...)\n\n\tcase MarkAllAsReadMsg:\n\t\t// Mark all notifications as read (update their state)\n\t\tfor i := range m.Notifications {\n\t\t\tm.Notifications[i].Notification.Unread = false\n\t\t\t// Track all as marked read this session so they remain visible\n\t\t\tm.sessionMarkedRead[m.Notifications[i].GetId()] = true\n\t\t}\n\t\tm.Table.SetRows(m.BuildRows())\n\t}\n\n\tsearch, searchCmd := m.SearchBar.Update(msg)\n\tm.SearchBar = search\n\n\tprompt, promptCmd := m.PromptConfirmationBox.Update(msg)\n\tm.PromptConfirmationBox = prompt\n\n\ttbl, tableCmd := m.Table.Update(msg)\n\tm.Table = tbl\n\n\treturn m, tea.Batch(cmd, searchCmd, promptCmd, tableCmd)\n}\n\nfunc GetSectionColumns(ctx *context.ProgramContext) []table.Column {\n\treturn []table.Column{\n\t\t{\n\t\t\tTitle: \"Type\",\n\t\t\tWidth: utils.IntPtr(6), // Type icon\n\t\t\tAlign: func() *lipgloss.Position { p := lipgloss.Center; return &p }(),\n\t\t},\n\t\t{\n\t\t\tTitle: \"Title\",\n\t\t\tGrow:  utils.BoolPtr(true), // 3-line title block (includes bookmark icon)\n\t\t},\n\t\t{\n\t\t\tTitle: \"Activity\",\n\t\t\tWidth: utils.IntPtr(10), // Comments count with icon\n\t\t\tAlign: func() *lipgloss.Position { p := lipgloss.Right; return &p }(),\n\t\t},\n\t\t{\n\t\t\tTitle: \"󱦻    \",          // Trailing padding to center when right-aligned\n\t\t\tWidth: utils.IntPtr(12), // Updated at (e.g., \"12mo ago\")\n\t\t\tAlign: func() *lipgloss.Position { p := lipgloss.Right; return &p }(),\n\t\t},\n\t}\n}\n\nfunc (m *Model) toggleSortOrder() {\n\tif m.SortOrder == SortByUpdated {\n\t\tm.SortOrder = SortByRepo\n\t} else {\n\t\tm.SortOrder = SortByUpdated\n\t}\n\tm.sortNotifications()\n}\n\nfunc (m *Model) sortNotifications() {\n\tswitch m.SortOrder {\n\tcase SortByRepo:\n\t\tslices.SortFunc(m.Notifications, func(a, b notificationrow.Data) int {\n\t\t\trepoA := a.Notification.Repository.FullName\n\t\t\trepoB := b.Notification.Repository.FullName\n\t\t\tif repoA < repoB {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif repoA > repoB {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\t// Secondary sort by updated time (most recent first)\n\t\t\tif a.Notification.UpdatedAt.After(b.Notification.UpdatedAt) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif a.Notification.UpdatedAt.Before(b.Notification.UpdatedAt) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\tcase SortByUpdated:\n\t\tslices.SortFunc(m.Notifications, func(a, b notificationrow.Data) int {\n\t\t\tif a.Notification.UpdatedAt.After(b.Notification.UpdatedAt) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif a.Notification.UpdatedAt.Before(b.Notification.UpdatedAt) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n}\n\nfunc (m Model) BuildRows() []table.Row {\n\tvar rows []table.Row\n\tfor i := range m.Notifications {\n\t\tnotification := &m.Notifications[i]\n\t\tnotificationModel := notificationrow.Notification{Ctx: m.Ctx, Data: notification}\n\t\trows = append(rows, notificationModel.ToTableRow())\n\t}\n\n\tif rows == nil {\n\t\trows = []table.Row{}\n\t}\n\n\treturn rows\n}\n\nfunc (m *Model) NumRows() int {\n\treturn len(m.Notifications)\n}\n\nfunc (m *Model) GetCurrRow() data.RowData {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.Notifications) {\n\t\treturn nil\n\t}\n\treturn &m.Notifications[idx]\n}\n\nfunc (m *Model) GetCurrNotification() *notificationrow.Data {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.Notifications) {\n\t\treturn nil\n\t}\n\treturn &m.Notifications[idx]\n}\n\nfunc (m *Model) FetchNextPageSectionRows() []tea.Cmd {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\t// Check if there's a next page (skip if we already know there isn't)\n\tif m.PageInfo != nil && !m.PageInfo.HasNextPage {\n\t\treturn nil\n\t}\n\n\tvar cmds []tea.Cmd\n\n\t// Parse filters from search value (includes repo filter if smartFilteringAtLaunch is enabled)\n\tfilters := parseNotificationFilters(m.GetSearchValue(), m.Ctx.Config.IncludeReadNotifications)\n\n\t// Handle is:done filter - these notifications cannot be retrieved\n\tif filters.IsDone {\n\t\tm.Notifications = []notificationrow.Data{}\n\t\tm.TotalCount = 0\n\t\tm.SetIsLoading(false)\n\t\tm.Table.SetRows(m.BuildRows())\n\t\tm.UpdateTotalItemsCount(0)\n\t\t// Return a message that will be shown to the user\n\t\treturn []tea.Cmd{func() tea.Msg {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   m.Id,\n\t\t\t\tSectionType: m.Type,\n\t\t\t\tTaskId:      \"done_filter\",\n\t\t\t\tErr:         fmt.Errorf(\"done notifications cannot be retrieved\"),\n\t\t\t}\n\t\t}}\n\t}\n\n\ttaskId := fmt.Sprintf(\"fetching_notifications_%d_%s\", m.Id, time.Now().String())\n\tm.LastFetchTaskId = taskId\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Fetching notifications\",\n\t\tFinishedText: \"Notifications have been fetched\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\tcmds = append(cmds, startCmd)\n\n\t// Capture session state for the closure\n\tsessionMarkedRead := m.sessionMarkedRead\n\thasSessionMarkedRead := len(sessionMarkedRead) > 0\n\tsessionMarkedDone := m.sessionMarkedDone\n\n\t// Capture current page info for pagination\n\tpageInfo := m.PageInfo\n\n\t// Capture config limit for the closure\n\tlimit := m.Ctx.Config.Defaults.NotificationsLimit\n\n\t// Build reason filter map for O(1) lookup\n\treasonFilterMap := make(map[string]bool, len(filters.ReasonFilters))\n\tfor _, reason := range filters.ReasonFilters {\n\t\treasonFilterMap[reason] = true\n\t}\n\n\tfetchCmd := func() tea.Msg {\n\t\t// Check if we need to include bookmarked items\n\t\t// Build a map for O(1) lookups in the filter loop\n\t\tbookmarkStore := data.GetBookmarkStore()\n\t\tbookmarkedIds := bookmarkStore.GetBookmarkedIds()\n\t\thasBookmarks := len(bookmarkedIds) > 0\n\t\tbookmarkedIdMap := make(map[string]bool, len(bookmarkedIds))\n\t\tfor _, id := range bookmarkedIds {\n\t\t\tbookmarkedIdMap[id] = true\n\t\t}\n\n\t\t// Use the filter's read state directly - don't switch to \"all\" just for bookmarks/session items\n\t\t// Bookmarked and session-marked-read items will be fetched separately by thread ID\n\t\treadState := filters.ReadState\n\n\t\t// Initialize done store for filtering\n\t\tdoneStore := data.GetDoneStore()\n\n\t\t// Track accumulated notifications across multiple pages.\n\t\t// We may need to fetch additional pages if many notifications are filtered out\n\t\t// (e.g., marked as done locally). The loop continues until we have enough\n\t\t// notifications to display or run out of pages from the API.\n\t\tnotifications := make([]notificationrow.Data, 0, limit)\n\t\tcurrentPageInfo := pageInfo\n\t\tvar lastPageInfo data.PageInfo\n\t\tisFirstPage := pageInfo == nil\n\t\tfor {\n\t\t\tres, err := data.FetchNotifications(\n\t\t\t\tlimit,\n\t\t\t\tfilters.RepoFilters,\n\t\t\t\treadState,\n\t\t\t\tcurrentPageInfo,\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\t\tSectionId:   m.Id,\n\t\t\t\t\tSectionType: m.Type,\n\t\t\t\t\tTaskId:      taskId,\n\t\t\t\t\tErr:         err,\n\t\t\t\t}\n\t\t\t}\n\t\t\tlastPageInfo = res.PageInfo\n\n\t\t\t// Build a set of IDs we fetched from the API\n\t\t\tfetchedIds := make(map[string]bool, len(res.Notifications))\n\t\t\tfor _, n := range res.Notifications {\n\t\t\t\tfetchedIds[n.Id] = true\n\t\t\t}\n\n\t\t\t// On first page, fetch any bookmarked/session-marked-read notifications that are missing\n\t\t\t// (they may have aged out of the default notifications list or been marked as read)\n\t\t\tif isFirstPage {\n\t\t\t\tisFirstPage = false\n\n\t\t\t\t// Collect all missing IDs that need to be fetched\n\t\t\t\tmissingIds := make([]string, 0)\n\t\t\t\tif filters.IncludeBookmarked && hasBookmarks {\n\t\t\t\t\tfor _, bookmarkId := range bookmarkedIds {\n\t\t\t\t\t\tif !fetchedIds[bookmarkId] {\n\t\t\t\t\t\t\tmissingIds = append(missingIds, bookmarkId)\n\t\t\t\t\t\t\tfetchedIds[bookmarkId] = true // Mark as fetched to avoid duplicates\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif hasSessionMarkedRead {\n\t\t\t\t\tfor id := range sessionMarkedRead {\n\t\t\t\t\t\tif !fetchedIds[id] {\n\t\t\t\t\t\t\tmissingIds = append(missingIds, id)\n\t\t\t\t\t\t\tfetchedIds[id] = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fetch all missing notifications in parallel\n\t\t\t\tif len(missingIds) > 0 {\n\t\t\t\t\t// Build repo filter map for O(1) lookup\n\t\t\t\t\trepoFilterMap := make(map[string]bool, len(filters.RepoFilters))\n\t\t\t\t\tfor _, repo := range filters.RepoFilters {\n\t\t\t\t\t\trepoFilterMap[repo] = true\n\t\t\t\t\t}\n\n\t\t\t\t\ttype fetchResult struct {\n\t\t\t\t\t\tnotification *data.NotificationData\n\t\t\t\t\t\terr          error\n\t\t\t\t\t}\n\t\t\t\t\tresults := make(chan fetchResult, len(missingIds))\n\n\t\t\t\t\tvar wg sync.WaitGroup\n\t\t\t\t\tfor _, id := range missingIds {\n\t\t\t\t\t\twg.Add(1)\n\t\t\t\t\t\tgo func(threadId string) {\n\t\t\t\t\t\t\tdefer wg.Done()\n\t\t\t\t\t\t\tnotification, err := data.FetchNotificationByThreadId(threadId)\n\t\t\t\t\t\t\tresults <- fetchResult{notification: notification, err: err}\n\t\t\t\t\t\t}(id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Close results channel when all goroutines complete\n\t\t\t\t\tgo func() {\n\t\t\t\t\t\twg.Wait()\n\t\t\t\t\t\tclose(results)\n\t\t\t\t\t}()\n\n\t\t\t\t\t// Collect results\n\t\t\t\t\tfor result := range results {\n\t\t\t\t\t\tif result.err != nil {\n\t\t\t\t\t\t\tlog.Debug(\"Failed to fetch missing notification\", \"err\", result.err)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif result.notification == nil {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Apply repo filter if set\n\t\t\t\t\t\tif len(repoFilterMap) > 0 &&\n\t\t\t\t\t\t\t!repoFilterMap[result.notification.Repository.FullName] {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres.Notifications = append(res.Notifications, *result.notification)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Filter notifications based on bookmark settings and session state\n\t\t\tfor _, n := range res.Notifications {\n\t\t\t\t// Skip notifications marked as done (GitHub API still returns them with all=true)\n\t\t\t\t// Check both persistent store and session state\n\t\t\t\tif doneStore.IsDone(n.Id, n.UpdatedAt) || sessionMarkedDone[n.Id] {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tinclude := false\n\n\t\t\t\t// Always include notifications marked as read this session (until manual refresh)\n\t\t\t\tif sessionMarkedRead[n.Id] {\n\t\t\t\t\tinclude = true\n\t\t\t\t} else if filters.IncludeBookmarked && hasBookmarks {\n\t\t\t\t\t// Default view: include if unread OR bookmarked (O(1) map lookup)\n\t\t\t\t\tinclude = n.Unread || bookmarkedIdMap[n.Id]\n\t\t\t\t} else {\n\t\t\t\t\t// Explicit filter: follow the ReadState filter\n\t\t\t\t\tswitch filters.ReadState {\n\t\t\t\t\tcase data.NotificationStateUnread:\n\t\t\t\t\t\tinclude = n.Unread\n\t\t\t\t\tcase data.NotificationStateRead:\n\t\t\t\t\t\tinclude = !n.Unread\n\t\t\t\t\tcase data.NotificationStateAll:\n\t\t\t\t\t\tinclude = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply reason filter if specified (O(1) map lookup)\n\t\t\t\tif include && len(reasonFilterMap) > 0 {\n\t\t\t\t\tinclude = reasonFilterMap[n.Reason]\n\t\t\t\t}\n\n\t\t\t\tif include {\n\t\t\t\t\tnotifications = append(notifications, notificationrow.Data{\n\t\t\t\t\t\tNotification: n,\n\t\t\t\t\t\t// Generate initial activity description (will be updated with actor later)\n\t\t\t\t\t\tActivityDescription: notificationrow.GenerateActivityDescription(\n\t\t\t\t\t\t\tn.Reason,\n\t\t\t\t\t\t\tn.Subject.Type,\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if we have enough notifications or if we've run out of pages\n\t\t\tif len(notifications) >= limit || !lastPageInfo.HasNextPage {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Need more notifications - fetch the next page\n\t\t\tcurrentPageInfo = &lastPageInfo\n\t\t\tlog.Debug(\"Fetching additional page due to done filtering\",\n\t\t\t\t\"currentCount\", len(notifications),\n\t\t\t\t\"targetLimit\", limit,\n\t\t\t\t\"nextPage\", lastPageInfo.EndCursor)\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: m.Type,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg: SectionNotificationsFetchedMsg{\n\t\t\t\tNotifications: notifications,\n\t\t\t\tTotalCount:    len(notifications),\n\t\t\t\tTaskId:        taskId,\n\t\t\t\tPageInfo:      lastPageInfo,\n\t\t\t},\n\t\t}\n\t}\n\tcmds = append(cmds, fetchCmd)\n\n\treturn cmds\n}\n\nfunc (m *Model) UpdateLastUpdated(t time.Time) {\n\tm.Table.UpdateLastUpdated(t)\n}\n\nfunc (m *Model) ResetRows() {\n\tm.Notifications = nil\n\t// Clear session state on manual refresh - user explicitly wants fresh data\n\tm.sessionMarkedRead = make(map[string]bool)\n\tm.sessionMarkedDone = make(map[string]bool)\n\tm.BaseModel.ResetRows()\n}\n\n// FetchAllSections creates and fetches all notification sections based on config.\n// Returns sections and a batch command to fetch all data.\nfunc FetchAllSections(\n\tctx *context.ProgramContext,\n\texisting []section.Section,\n) (sections []section.Section, fetchAllCmd tea.Cmd) {\n\tsectionConfigs := ctx.Config.NotificationsSections\n\tfetchCmds := make([]tea.Cmd, 0, len(sectionConfigs))\n\tsections = make([]section.Section, 0, len(sectionConfigs))\n\n\tfor i, sectionConfig := range sectionConfigs {\n\t\tsectionModel := NewModel(\n\t\t\ti+1, // ID 0 is reserved for search section\n\t\t\tctx,\n\t\t\tsectionConfig,\n\t\t\ttime.Now(),\n\t\t)\n\n\t\t// Preserve existing data and filter state if refreshing\n\t\tif len(existing) > i+1 && existing[i+1] != nil {\n\t\t\tif oldSection, ok := existing[i+1].(*Model); ok {\n\t\t\t\tsectionModel.Notifications = oldSection.Notifications\n\t\t\t\tsectionModel.LastFetchTaskId = oldSection.LastFetchTaskId\n\t\t\t\tsectionModel.sessionMarkedRead = oldSection.sessionMarkedRead\n\t\t\t\tsectionModel.sessionMarkedDone = oldSection.sessionMarkedDone\n\t\t\t\t// Preserve user's filter state - don't reset on refresh\n\t\t\t\tsectionModel.IsFilteredByCurrentRemote = oldSection.IsFilteredByCurrentRemote\n\t\t\t\tsectionModel.SearchValue = oldSection.SearchValue\n\t\t\t\tsectionModel.SearchBar.SetValue(oldSection.SearchValue)\n\t\t\t}\n\t\t}\n\n\t\tsections = append(sections, &sectionModel)\n\t\tfetchCmds = append(fetchCmds, sectionModel.FetchNextPageSectionRows()...)\n\t}\n\n\treturn sections, tea.Batch(fetchCmds...)\n}\n\n// SectionNotificationsFetchedMsg contains the result of fetching notifications from the GitHub API.\n// This message is sent when the initial fetch or a refresh completes.\ntype SectionNotificationsFetchedMsg struct {\n\tNotifications []notificationrow.Data\n\tTotalCount    int\n\tTaskId        string\n\tPageInfo      data.PageInfo\n}\n\n// UpdateNotificationMsg signals that a notification's state has changed.\n// If IsRemoved is true, the notification should be removed from the list (marked as done).\ntype UpdateNotificationMsg struct {\n\tId        string\n\tIsRemoved bool\n}\n\n// UpdateNotificationCommentsMsg carries additional notification metadata fetched asynchronously.\n// This includes comment counts, PR/Issue state, draft status, and the actor who triggered the notification.\ntype UpdateNotificationCommentsMsg struct {\n\tId               string\n\tNewCommentsCount int\n\tSubjectState     string // OPEN, CLOSED, MERGED\n\tIsDraft          bool\n\tActor            string // Username who triggered the notification\n}\n\n// UpdateNotificationUrlMsg carries a resolved URL for notifications where the URL\n// cannot be determined synchronously (e.g., CheckSuite notifications).\ntype UpdateNotificationUrlMsg struct {\n\tId          string\n\tResolvedUrl string\n}\n\nfunc (m Model) GetItemSingularForm() string {\n\treturn \"Notification\"\n}\n\nfunc (m Model) GetItemPluralForm() string {\n\treturn \"Notifications\"\n}\n\nfunc (m Model) GetTotalCount() int {\n\treturn m.TotalCount\n}\n\nfunc (m *Model) GetIsLoading() bool {\n\treturn m.IsLoading\n}\n\nfunc (m *Model) SetIsLoading(val bool) {\n\tm.IsLoading = val\n\tm.Table.SetIsLoading(val)\n}\n\nfunc (m Model) GetPagerContent() string {\n\tpagerContent := \"\"\n\tif m.TotalCount > 0 {\n\t\tpagerContent = fmt.Sprintf(\n\t\t\t\"%v %v • %v %v/%v\",\n\t\t\tconstants.WaitingIcon,\n\t\t\tm.LastUpdated().Format(\"01/02 15:04:05\"),\n\t\t\tm.SingularForm,\n\t\t\tm.Table.GetCurrItem()+1,\n\t\t\tm.TotalCount,\n\t\t)\n\t}\n\tpager := m.Ctx.Styles.ListViewPort.PagerStyle.Render(pagerContent)\n\treturn pager\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tif ctx == nil {\n\t\treturn\n\t}\n\n\t// Rebuild columns if sidebar state changed\n\tif ctx.SidebarOpen != m.lastSidebarOpen {\n\t\tm.lastSidebarOpen = ctx.SidebarOpen\n\t\tm.Table.Columns = GetSectionColumns(ctx)\n\t}\n\n\tm.BaseModel.UpdateProgramContext(ctx)\n}\n\n// fetchCommentCountsForNotifications returns commands to fetch comment counts for the given notifications\nfunc (m *Model) fetchCommentCountsForNotifications(notifications []notificationrow.Data) []tea.Cmd {\n\tvar cmds []tea.Cmd\n\n\tlog.Debug(\"fetchCommentCountsForNotifications called\", \"numNotifications\", len(notifications))\n\n\tfor _, notif := range notifications {\n\t\t// Copy values for closure capture\n\t\tnotifId := notif.GetId()\n\t\tsubjectType := notif.GetSubjectType()\n\t\tsubjectUrl := notif.GetUrl()\n\t\tlastReadAt := notif.Notification.LastReadAt\n\t\tapiUrl := notif.Notification.Subject.Url\n\n\t\tlog.Debug(\n\t\t\t\"Processing notification\",\n\t\t\t\"id\",\n\t\t\tnotifId,\n\t\t\t\"type\",\n\t\t\tsubjectType,\n\t\t\t\"webUrl\",\n\t\t\tsubjectUrl,\n\t\t\t\"apiUrl\",\n\t\t\tapiUrl,\n\t\t)\n\n\t\tlatestCommentUrl := notif.Notification.Subject.LatestCommentUrl\n\n\t\t// Only fetch for PR and Issue types\n\t\tswitch subjectType {\n\t\tcase \"PullRequest\":\n\t\t\t// Capture variables for closure\n\t\t\tid, url, readAt, commentUrl := notifId, subjectUrl, lastReadAt, latestCommentUrl\n\t\t\tcmds = append(cmds, func() tea.Msg {\n\t\t\t\tlog.Debug(\"Fetching PR for comment count\", \"url\", url)\n\t\t\t\tpr, err := data.FetchPullRequest(url)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Error(\"Failed to fetch PR for comment count\", \"url\", url, \"err\", err)\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tcount := countNewPRComments(pr, readAt)\n\t\t\t\tactor, _ := data.FetchCommentAuthor(commentUrl)\n\t\t\t\tif actor == \"\" {\n\t\t\t\t\tactor = pr.Author.Login\n\t\t\t\t}\n\t\t\t\tlog.Debug(\n\t\t\t\t\t\"Got PR comment count\",\n\t\t\t\t\t\"id\",\n\t\t\t\t\tid,\n\t\t\t\t\t\"count\",\n\t\t\t\t\tcount,\n\t\t\t\t\t\"state\",\n\t\t\t\t\tpr.State,\n\t\t\t\t\t\"actor\",\n\t\t\t\t\tactor,\n\t\t\t\t)\n\t\t\t\treturn UpdateNotificationCommentsMsg{\n\t\t\t\t\tId:               id,\n\t\t\t\t\tNewCommentsCount: count,\n\t\t\t\t\tSubjectState:     pr.State,\n\t\t\t\t\tIsDraft:          pr.IsDraft,\n\t\t\t\t\tActor:            actor,\n\t\t\t\t}\n\t\t\t})\n\t\tcase \"Issue\":\n\t\t\t// Capture variables for closure\n\t\t\tid, url, readAt, commentUrl := notifId, subjectUrl, lastReadAt, latestCommentUrl\n\t\t\tcmds = append(cmds, func() tea.Msg {\n\t\t\t\tlog.Debug(\"Fetching Issue for comment count\", \"url\", url)\n\t\t\t\tissue, err := data.FetchIssue(url)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Error(\"Failed to fetch Issue for comment count\", \"url\", url, \"err\", err)\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tcount := countNewIssueComments(issue, readAt)\n\t\t\t\tactor, _ := data.FetchCommentAuthor(commentUrl)\n\t\t\t\tif actor == \"\" {\n\t\t\t\t\tactor = issue.Author.Login\n\t\t\t\t}\n\t\t\t\tlog.Debug(\n\t\t\t\t\t\"Got Issue comment count\",\n\t\t\t\t\t\"id\",\n\t\t\t\t\tid,\n\t\t\t\t\t\"count\",\n\t\t\t\t\tcount,\n\t\t\t\t\t\"state\",\n\t\t\t\t\tissue.State,\n\t\t\t\t\t\"actor\",\n\t\t\t\t\tactor,\n\t\t\t\t)\n\t\t\t\treturn UpdateNotificationCommentsMsg{\n\t\t\t\t\tId:               id,\n\t\t\t\t\tNewCommentsCount: count,\n\t\t\t\t\tSubjectState:     issue.State,\n\t\t\t\t\tActor:            actor,\n\t\t\t\t}\n\t\t\t})\n\t\tcase \"CheckSuite\":\n\t\t\t// CheckSuite notifications have subject.url=null in GitHub's API.\n\t\t\t// We fetch recent workflow runs and find the best match by timestamp.\n\t\t\tid := notifId\n\t\t\trepo := notif.Notification.Repository.FullName\n\t\t\tupdatedAt := notif.Notification.UpdatedAt\n\t\t\ttitle := notif.Notification.Subject.Title\n\t\t\tcmds = append(cmds, func() tea.Msg {\n\t\t\t\tlog.Debug(\"Fetching workflow run for CheckSuite\", \"id\", id, \"repo\", repo)\n\t\t\t\turl, err := data.FetchRecentWorkflowRun(repo, updatedAt, title)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Error(\"Failed to fetch workflow run\", \"id\", id, \"err\", err)\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tif url == \"\" {\n\t\t\t\t\tlog.Debug(\"No matching workflow run found\", \"id\", id)\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tlog.Debug(\"Found workflow run URL\", \"id\", id, \"url\", url)\n\t\t\t\treturn UpdateNotificationUrlMsg{\n\t\t\t\t\tId:          id,\n\t\t\t\t\tResolvedUrl: url,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tlog.Debug(\"fetchCommentCountsForNotifications returning\", \"numCmds\", len(cmds))\n\treturn cmds\n}\n\n// countNewPRComments counts comments in a PR that are newer than lastReadAt\n// If lastReadAt is nil (never read), counts all comments\nfunc countNewPRComments(pr data.EnrichedPullRequestData, lastReadAt *time.Time) int {\n\tcount := 0\n\n\tfor _, comment := range pr.Comments.Nodes {\n\t\tif lastReadAt == nil || comment.UpdatedAt.After(*lastReadAt) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tfor _, thread := range pr.ReviewThreads.Nodes {\n\t\tfor _, comment := range thread.Comments.Nodes {\n\t\t\tif lastReadAt == nil || comment.UpdatedAt.After(*lastReadAt) {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, review := range pr.Reviews.Nodes {\n\t\tif lastReadAt == nil || review.UpdatedAt.After(*lastReadAt) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\treturn count\n}\n\n// countNewIssueComments counts comments in an Issue that are newer than lastReadAt\n// If lastReadAt is nil (never read), counts all comments\nfunc countNewIssueComments(issue data.IssueData, lastReadAt *time.Time) int {\n\tcount := 0\n\tfor _, comment := range issue.Comments.Nodes {\n\t\tif lastReadAt == nil || comment.UpdatedAt.After(*lastReadAt) {\n\t\t\tcount++\n\t\t}\n\t}\n\n\treturn count\n}\n"
  },
  {
    "path": "internal/tui/components/notificationview/notificationview.go",
    "content": "package notificationview\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx   *context.ProgramContext\n\trow   *notificationrow.Data\n\twidth int\n\n\t// Cached notification subject data for sidebar display\n\tsubjectPR    *prrow.Data\n\tsubjectIssue *data.IssueData\n\tsubjectId    string // ID of the notification whose subject is cached\n\n\t// Pending confirmation action for PR/Issue (e.g., \"pr_close\", \"issue_reopen\")\n\tpendingAction string\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\treturn Model{\n\t\tctx: ctx,\n\t}\n}\n\nfunc (m *Model) SetRow(row *notificationrow.Data) {\n\tm.row = row\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.width = width\n}\n\nfunc (m *Model) ResetSubject() {\n\tm.subjectPR = nil\n\tm.subjectIssue = nil\n\tm.subjectId = \"\"\n}\n\nfunc (m *Model) SetSubjectPR(pr *prrow.Data, notificationId string) {\n\tm.subjectPR = pr\n\tm.subjectIssue = nil\n\tm.subjectId = notificationId\n}\n\nfunc (m *Model) SetSubjectIssue(issue *data.IssueData, notificationId string) {\n\tm.subjectIssue = issue\n\tm.subjectPR = nil\n\tm.subjectId = notificationId\n}\n\nfunc (m *Model) GetSubjectPR() *prrow.Data {\n\treturn m.subjectPR\n}\n\nfunc (m *Model) GetSubjectIssue() *data.IssueData {\n\treturn m.subjectIssue\n}\n\nfunc (m *Model) GetSubjectId() string {\n\treturn m.subjectId\n}\n\nfunc (m *Model) ClearSubject() {\n\tm.subjectPR = nil\n\tm.subjectIssue = nil\n\tm.subjectId = \"\"\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n}\n\n// SetPendingPRAction sets a pending PR action and returns the confirmation prompt.\n// action is one of: \"close\", \"reopen\", \"ready\", \"merge\", \"update\"\n// Returns empty string if no subject PR is set.\nfunc (m *Model) SetPendingPRAction(action string) string {\n\tif m.subjectPR == nil {\n\t\treturn \"\"\n\t}\n\tm.pendingAction = \"pr_\" + action\n\n\tactionDisplay := action\n\tswitch action {\n\tcase \"ready\":\n\t\tactionDisplay = \"mark as ready\"\n\tcase \"approveWorkflows\":\n\t\tactionDisplay = \"approve all workflows for\"\n\t}\n\treturn fmt.Sprintf(\n\t\t\"Are you sure you want to %s PR #%d? (y/N)\",\n\t\tactionDisplay,\n\t\tm.subjectPR.GetNumber(),\n\t)\n}\n\n// SetPendingIssueAction sets a pending Issue action and returns the confirmation prompt.\n// action is one of: \"close\", \"reopen\"\n// Returns empty string if no subject Issue is set.\nfunc (m *Model) SetPendingIssueAction(action string) string {\n\tif m.subjectIssue == nil {\n\t\treturn \"\"\n\t}\n\tm.pendingAction = \"issue_\" + action\n\n\treturn fmt.Sprintf(\n\t\t\"Are you sure you want to %s Issue #%d? (y/N)\",\n\t\taction,\n\t\tm.subjectIssue.Number,\n\t)\n}\n\n// HasPendingAction returns true if there is a pending action awaiting confirmation.\nfunc (m *Model) HasPendingAction() bool {\n\treturn m.pendingAction != \"\"\n}\n\n// GetPendingAction returns the current pending action.\nfunc (m *Model) GetPendingAction() string {\n\treturn m.pendingAction\n}\n\n// ClearPendingAction clears any pending action.\nfunc (m *Model) ClearPendingAction() {\n\tm.pendingAction = \"\"\n}\n\n// Update handles key messages for confirmation dialogs.\n// Returns the confirmed action string (empty if not confirmed or cancelled).\nfunc (m Model) Update(msg tea.Msg) (Model, string) {\n\tif !m.HasPendingAction() {\n\t\treturn m, \"\"\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyPressMsg:\n\t\tif msg.String() == \"y\" || msg.String() == \"Y\" || msg.Code == tea.KeyEnter {\n\t\t\taction := m.pendingAction\n\t\t\tm.pendingAction = \"\"\n\t\t\treturn m, action\n\t\t}\n\t\t// Any other key cancels the confirmation\n\t\tm.pendingAction = \"\"\n\t}\n\n\treturn m, \"\"\n}\n\nfunc (m Model) View() string {\n\tif m.row == nil {\n\t\treturn \"\"\n\t}\n\n\ts := strings.Builder{}\n\tnotification := m.row.Notification\n\n\t// Title - using common preview styling\n\ttitleBlock := common.RenderPreviewTitle(\n\t\tm.ctx.Theme,\n\t\tm.ctx.Styles.Common,\n\t\tm.width,\n\t\tnotification.Subject.Title,\n\t)\n\n\tlabelStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.FaintText).\n\t\tWidth(16)\n\n\tvalueStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.SecondaryText)\n\n\tfaintValueStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.FaintText)\n\n\tsectionStyle := lipgloss.NewStyle().\n\t\tPaddingBottom(1)\n\n\ts.WriteString(titleBlock)\n\ts.WriteString(\"\\n\\n\")\n\n\t// Type with icon\n\ttypeIcon := getTypeIcon(notification.Subject.Type)\n\ttypeRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Type\"),\n\t\tvalueStyle.Render(fmt.Sprintf(\"%s %s\", typeIcon, notification.Subject.Type)),\n\t)\n\ts.WriteString(sectionStyle.Render(typeRow))\n\ts.WriteString(\"\\n\")\n\n\trepoRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Repository\"),\n\t\tvalueStyle.Render(notification.Repository.FullName),\n\t)\n\ts.WriteString(sectionStyle.Render(repoRow))\n\ts.WriteString(\"\\n\")\n\n\tvisibility := \"Public\"\n\tif notification.Repository.Private {\n\t\tvisibility = \"Private\"\n\t}\n\tvisibilityRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Visibility\"),\n\t\tvalueStyle.Render(visibility),\n\t)\n\ts.WriteString(sectionStyle.Render(visibilityRow))\n\ts.WriteString(\"\\n\")\n\n\treasonRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Reason\"),\n\t\tvalueStyle.Render(formatReason(notification.Reason)),\n\t)\n\ts.WriteString(sectionStyle.Render(reasonRow))\n\ts.WriteString(\"\\n\")\n\n\tstatus := \"Read\"\n\tif notification.Unread {\n\t\tstatus = \"Unread\"\n\t}\n\tstatusRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Status\"),\n\t\tvalueStyle.Render(status),\n\t)\n\ts.WriteString(sectionStyle.Render(statusRow))\n\ts.WriteString(\"\\n\")\n\n\t// Updated at\n\tupdatedRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Updated\"),\n\t\tvalueStyle.Render(notification.UpdatedAt.Local().Format(\"Jan 2, 2006 3:04 PM\")),\n\t)\n\ts.WriteString(sectionStyle.Render(updatedRow))\n\ts.WriteString(\"\\n\")\n\n\t// Last read at\n\tlastReadValue := \"Never\"\n\tif notification.LastReadAt != nil {\n\t\tlastReadValue = notification.LastReadAt.Local().Format(\"Jan 2, 2006 3:04 PM\")\n\t}\n\tlastReadRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Last Read\"),\n\t\tvalueStyle.Render(lastReadValue),\n\t)\n\ts.WriteString(sectionStyle.Render(lastReadRow))\n\ts.WriteString(\"\\n\")\n\n\thasComment := \"No\"\n\tif notification.Subject.LatestCommentUrl != \"\" {\n\t\thasComment = \"Yes\"\n\t}\n\tcommentRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Has Comment\"),\n\t\tvalueStyle.Render(hasComment),\n\t)\n\ts.WriteString(sectionStyle.Render(commentRow))\n\ts.WriteString(\"\\n\")\n\n\tidRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tlabelStyle.Render(\"Notification ID\"),\n\t\tfaintValueStyle.Render(notification.Id),\n\t)\n\ts.WriteString(sectionStyle.Render(idRow))\n\ts.WriteString(\"\\n\")\n\n\tif notification.Subject.Url != \"\" {\n\t\turlRow := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\tlabelStyle.Render(\"API URL\"),\n\t\t\tfaintValueStyle.Render(notification.Subject.Url),\n\t\t)\n\t\ts.WriteString(sectionStyle.Render(urlRow))\n\t}\n\n\treturn s.String()\n}\n\nfunc getTypeIcon(subjectType string) string {\n\tswitch subjectType {\n\tcase \"PullRequest\":\n\t\treturn \"\"\n\tcase \"Issue\":\n\t\treturn \"\"\n\tcase \"Discussion\":\n\t\treturn \"\"\n\tcase \"Release\":\n\t\treturn \"\"\n\tcase \"Commit\":\n\t\treturn \"\"\n\tcase \"CheckSuite\":\n\t\treturn \"\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc formatReason(reason string) string {\n\tswitch reason {\n\tcase \"subscribed\":\n\t\treturn \"Subscribed\"\n\tcase \"review_requested\":\n\t\treturn \"Review requested\"\n\tcase \"author\":\n\t\treturn \"Author\"\n\tcase \"comment\":\n\t\treturn \"Comment\"\n\tcase \"mention\":\n\t\treturn \"Mentioned\"\n\tcase \"team_mention\":\n\t\treturn \"Team mentioned\"\n\tcase \"state_change\":\n\t\treturn \"State changed\"\n\tcase \"assign\":\n\t\treturn \"Assigned\"\n\tcase \"ci_activity\":\n\t\treturn \"CI activity\"\n\tcase \"approval_requested\":\n\t\treturn \"Approval requested\"\n\tdefault:\n\t\treturn reason\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/notificationview/notificationview_test.go",
    "content": "package notificationview\n\nimport (\n\t\"testing\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc TestSetPendingPRAction(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\taction         string\n\t\tprNumber       int\n\t\texpectedAction string\n\t\texpectedPrompt string\n\t}{\n\t\t{\n\t\t\tname:           \"close action\",\n\t\t\taction:         \"close\",\n\t\t\tprNumber:       123,\n\t\t\texpectedAction: \"pr_close\",\n\t\t\texpectedPrompt: \"Are you sure you want to close PR #123? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"reopen action\",\n\t\t\taction:         \"reopen\",\n\t\t\tprNumber:       456,\n\t\t\texpectedAction: \"pr_reopen\",\n\t\t\texpectedPrompt: \"Are you sure you want to reopen PR #456? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"ready action displays as mark as ready\",\n\t\t\taction:         \"ready\",\n\t\t\tprNumber:       789,\n\t\t\texpectedAction: \"pr_ready\",\n\t\t\texpectedPrompt: \"Are you sure you want to mark as ready PR #789? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"merge action\",\n\t\t\taction:         \"merge\",\n\t\t\tprNumber:       100,\n\t\t\texpectedAction: \"pr_merge\",\n\t\t\texpectedPrompt: \"Are you sure you want to merge PR #100? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"update action\",\n\t\t\taction:         \"update\",\n\t\t\tprNumber:       200,\n\t\t\texpectedAction: \"pr_update\",\n\t\t\texpectedPrompt: \"Are you sure you want to update PR #200? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"approveWorkflows action displays as approve all workflows for\",\n\t\t\taction:         \"approveWorkflows\",\n\t\t\tprNumber:       300,\n\t\t\texpectedAction: \"pr_approveWorkflows\",\n\t\t\texpectedPrompt: \"Are you sure you want to approve all workflows for PR #300? (y/N)\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := NewModel(&context.ProgramContext{})\n\t\t\tm.SetSubjectPR(&prrow.Data{\n\t\t\t\tPrimary: &data.PullRequestData{Number: tt.prNumber},\n\t\t\t}, \"notif-id\")\n\n\t\t\tprompt := m.SetPendingPRAction(tt.action)\n\n\t\t\trequire.Equal(t, tt.expectedAction, m.GetPendingAction())\n\t\t\trequire.Equal(t, tt.expectedPrompt, prompt)\n\t\t\trequire.True(t, m.HasPendingAction())\n\t\t})\n\t}\n}\n\nfunc TestSetPendingPRAction_NilSubject(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\n\tprompt := m.SetPendingPRAction(\"close\")\n\n\trequire.Empty(t, prompt, \"should return empty prompt when no PR subject\")\n\trequire.Empty(t, m.GetPendingAction(), \"should not set pending action\")\n\trequire.False(t, m.HasPendingAction())\n}\n\nfunc TestSetPendingIssueAction(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\taction         string\n\t\tissueNumber    int\n\t\texpectedAction string\n\t\texpectedPrompt string\n\t}{\n\t\t{\n\t\t\tname:           \"close action\",\n\t\t\taction:         \"close\",\n\t\t\tissueNumber:    123,\n\t\t\texpectedAction: \"issue_close\",\n\t\t\texpectedPrompt: \"Are you sure you want to close Issue #123? (y/N)\",\n\t\t},\n\t\t{\n\t\t\tname:           \"reopen action\",\n\t\t\taction:         \"reopen\",\n\t\t\tissueNumber:    456,\n\t\t\texpectedAction: \"issue_reopen\",\n\t\t\texpectedPrompt: \"Are you sure you want to reopen Issue #456? (y/N)\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := NewModel(&context.ProgramContext{})\n\t\t\tm.SetSubjectIssue(&data.IssueData{Number: tt.issueNumber}, \"notif-id\")\n\n\t\t\tprompt := m.SetPendingIssueAction(tt.action)\n\n\t\t\trequire.Equal(t, tt.expectedAction, m.GetPendingAction())\n\t\t\trequire.Equal(t, tt.expectedPrompt, prompt)\n\t\t\trequire.True(t, m.HasPendingAction())\n\t\t})\n\t}\n}\n\nfunc TestSetPendingIssueAction_NilSubject(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\n\tprompt := m.SetPendingIssueAction(\"close\")\n\n\trequire.Empty(t, prompt, \"should return empty prompt when no Issue subject\")\n\trequire.Empty(t, m.GetPendingAction(), \"should not set pending action\")\n\trequire.False(t, m.HasPendingAction())\n}\n\nfunc TestClearPendingAction(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\trequire.True(t, m.HasPendingAction(), \"should have pending action before clear\")\n\n\tm.ClearPendingAction()\n\n\trequire.False(t, m.HasPendingAction(), \"should not have pending action after clear\")\n\trequire.Empty(t, m.GetPendingAction())\n}\n\nfunc TestHasPendingAction(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\n\trequire.False(t, m.HasPendingAction(), \"should be false initially\")\n\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"merge\")\n\n\trequire.True(t, m.HasPendingAction(), \"should be true after setting action\")\n\n\tm.ClearPendingAction()\n\n\trequire.False(t, m.HasPendingAction(), \"should be false after clearing\")\n}\n\n// Update method tests\n\nfunc TestUpdate_NoPendingAction(t *testing.T) {\n\t// When there's no pending action, Update should return early with no action\n\tm := NewModel(&context.ProgramContext{})\n\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Empty(t, action, \"should return empty action when no pending action\")\n\trequire.False(t, newModel.HasPendingAction())\n}\n\nfunc TestUpdate_ConfirmWithLowercaseY(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Equal(t, \"pr_close\", action, \"should return the confirmed action\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_ConfirmWithUppercaseY(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 456},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"merge\")\n\n\tmsg := tea.KeyPressMsg{Text: \"Y\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Equal(t, \"pr_merge\", action, \"should return the confirmed action\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_ConfirmWithEnter(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectIssue(&data.IssueData{Number: 789}, \"notif-id\")\n\tm.SetPendingIssueAction(\"reopen\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Equal(t, \"issue_reopen\", action, \"should return the confirmed action\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_CancelWithN(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\tmsg := tea.KeyPressMsg{Text: \"n\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Empty(t, action, \"should return empty action on cancel\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_CancelWithEscape(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"ready\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEsc}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Empty(t, action, \"should return empty action on escape\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_CancelWithRandomKey(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"update\")\n\n\t// Press a random key like 'x'\n\tmsg := tea.KeyPressMsg{Text: \"x\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Empty(t, action, \"should return empty action on random key\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_ConfirmReturnsAction(t *testing.T) {\n\t// Confirming should return the action string\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Equal(t, \"pr_close\", action, \"should return the confirmed action\")\n\trequire.False(t, newModel.HasPendingAction(), \"pending action should be cleared\")\n}\n\nfunc TestUpdate_NonKeyMsg(t *testing.T) {\n\t// Non-KeyMsg messages should be ignored\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\t// Send a non-key message (e.g., WindowSizeMsg)\n\tmsg := tea.WindowSizeMsg{Width: 100, Height: 50}\n\tnewModel, action := m.Update(msg)\n\n\trequire.Empty(t, action, \"should return empty action for non-key messages\")\n\trequire.True(\n\t\tt,\n\t\tnewModel.HasPendingAction(),\n\t\t\"pending action should remain for non-key messages\",\n\t)\n}\n\nfunc TestUpdate_AllPRActions(t *testing.T) {\n\t// Test that all PR action types work correctly\n\tactions := []string{\"close\", \"reopen\", \"ready\", \"merge\", \"update\", \"approveWorkflows\"}\n\n\tfor _, action := range actions {\n\t\tt.Run(action, func(t *testing.T) {\n\t\t\tm := NewModel(&context.ProgramContext{})\n\t\t\tm.SetSubjectPR(&prrow.Data{\n\t\t\t\tPrimary: &data.PullRequestData{Number: 123},\n\t\t\t}, \"notif-id\")\n\t\t\tm.SetPendingPRAction(action)\n\n\t\t\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\t\t\tnewModel, confirmedAction := m.Update(msg)\n\n\t\t\trequire.Equal(t, \"pr_\"+action, confirmedAction)\n\t\t\trequire.False(t, newModel.HasPendingAction())\n\t\t})\n\t}\n}\n\nfunc TestUpdate_AllIssueActions(t *testing.T) {\n\t// Test that all Issue action types work correctly\n\tactions := []string{\"close\", \"reopen\"}\n\n\tfor _, action := range actions {\n\t\tt.Run(action, func(t *testing.T) {\n\t\t\tm := NewModel(&context.ProgramContext{})\n\t\t\tm.SetSubjectIssue(&data.IssueData{Number: 456}, \"notif-id\")\n\t\t\tm.SetPendingIssueAction(action)\n\n\t\t\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t\t\tnewModel, confirmedAction := m.Update(msg)\n\n\t\t\trequire.Equal(t, \"issue_\"+action, confirmedAction)\n\t\t\trequire.False(t, newModel.HasPendingAction())\n\t\t})\n\t}\n}\n\nfunc TestUpdate_ReturnsActionOnConfirm(t *testing.T) {\n\tm := NewModel(&context.ProgramContext{})\n\tm.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{Number: 123},\n\t}, \"notif-id\")\n\tm.SetPendingPRAction(\"close\")\n\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\t_, action := m.Update(msg)\n\n\trequire.Equal(t, \"pr_close\", action, \"should return the action on confirm\")\n}\n"
  },
  {
    "path": "internal/tui/components/prompt/prompt.go",
    "content": "package prompt\n\nimport (\n\t\"charm.land/bubbles/v2/textinput\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx    *context.ProgramContext\n\tprompt textinput.Model\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tti := textinput.New()\n\tti.Focus()\n\tti.Blur()\n\tti.CursorStart()\n\n\treturn Model{\n\t\tctx:    ctx,\n\t\tprompt: ti,\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tvar cmd tea.Cmd\n\tm.prompt, cmd = m.prompt.Update(msg)\n\treturn m, cmd\n}\n\nfunc (m Model) View() string {\n\treturn m.prompt.View()\n}\n\nfunc (m Model) Init() tea.Cmd {\n\treturn textinput.Blink\n}\n\nfunc (m *Model) Blur() {\n\tm.prompt.Blur()\n}\n\nfunc (m *Model) Focus() tea.Cmd {\n\treturn m.prompt.Focus()\n}\n\nfunc (m *Model) SetValue(value string) {\n\tm.prompt.SetValue(value)\n}\n\nfunc (m *Model) Value() string {\n\treturn m.prompt.Value()\n}\n\nfunc (m *Model) SetPrompt(prompt string) {\n\tm.prompt.Prompt = prompt\n}\n\nfunc (m *Model) Reset() {\n\tm.prompt.Reset()\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n}\n"
  },
  {
    "path": "internal/tui/components/prrow/data.go",
    "content": "package prrow\n\nimport (\n\t\"time\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\ntype Data struct {\n\tPrimary    *data.PullRequestData\n\tEnriched   data.EnrichedPullRequestData\n\tIsEnriched bool\n}\n\nfunc (data Data) GetTitle() string {\n\treturn data.Primary.Title\n}\n\nfunc (data Data) GetRepoNameWithOwner() string {\n\treturn data.Primary.Repository.NameWithOwner\n}\n\nfunc (data Data) GetNumber() int {\n\treturn data.Primary.Number\n}\n\nfunc (data Data) GetUrl() string {\n\treturn data.Primary.Url\n}\n\nfunc (data Data) GetUpdatedAt() time.Time {\n\treturn data.Primary.UpdatedAt\n}\n\nfunc (data Data) GetCreatedAt() time.Time {\n\treturn data.Primary.CreatedAt\n}\n"
  },
  {
    "path": "internal/tui/components/prrow/prrow.go",
    "content": "package prrow\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\tchecks \"github.com/dlvhdr/x/gh-checks\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype PullRequest struct {\n\tCtx            *context.ProgramContext\n\tData           *Data\n\tBranch         git.Branch\n\tColumns        []table.Column\n\tShowAuthorIcon bool\n}\n\nfunc (pr *PullRequest) getTextStyle() lipgloss.Style {\n\treturn components.GetIssueTextStyle(pr.Ctx)\n}\n\nfunc (pr *PullRequest) renderNumComments() string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"-\"\n\t}\n\n\tnumCommentsStyle := pr.Ctx.Styles.Common.FaintTextStyle\n\treturn numCommentsStyle.Render(\n\t\tfmt.Sprintf(\n\t\t\t\"%d\",\n\t\t\tpr.Data.Primary.Comments.TotalCount+pr.Data.Primary.ReviewThreads.TotalCount,\n\t\t))\n}\n\nfunc (pr *PullRequest) renderReviewStatus() string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"-\"\n\t}\n\treviewCellStyle := pr.getTextStyle()\n\tif pr.Data.Primary.ReviewDecision == \"APPROVED\" {\n\t\treviewCellStyle = reviewCellStyle.Foreground(\n\t\t\tpr.Ctx.Theme.SuccessText,\n\t\t)\n\t\treturn reviewCellStyle.Render(constants.ApprovedIcon)\n\t}\n\n\tif pr.Data.Primary.ReviewDecision == \"CHANGES_REQUESTED\" {\n\t\treviewCellStyle = reviewCellStyle.Foreground(\n\t\t\tpr.Ctx.Theme.ErrorText,\n\t\t)\n\t\treturn reviewCellStyle.Render(constants.ChangesRequestedIcon)\n\t}\n\n\tif pr.Data.Primary.Reviews.TotalCount > 0 {\n\t\treturn reviewCellStyle.Render(pr.Ctx.Styles.Common.CommentGlyph)\n\t}\n\n\treturn reviewCellStyle.Render(pr.Ctx.Styles.Common.WaitingGlyph)\n}\n\nfunc (pr *PullRequest) renderState() string {\n\tmergeCellStyle := lipgloss.NewStyle()\n\n\tif pr.Data.Primary == nil {\n\t\treturn mergeCellStyle.Foreground(pr.Ctx.Theme.SuccessText).Render(\"󰜛\")\n\t}\n\n\tswitch pr.Data.Primary.State {\n\tcase \"OPEN\":\n\t\tif pr.Data.Primary.IsInMergeQueue {\n\t\t\treturn mergeCellStyle.Foreground(pr.Ctx.Theme.WarningText).\n\t\t\t\tRender(constants.MergeQueueIcon)\n\t\t}\n\t\tif pr.Data.Primary.IsDraft {\n\t\t\treturn mergeCellStyle.Foreground(pr.Ctx.Theme.FaintText).Render(constants.DraftIcon)\n\t\t} else {\n\t\t\treturn mergeCellStyle.Foreground(pr.Ctx.Styles.Colors.OpenPR).Render(constants.OpenIcon)\n\t\t}\n\tcase \"CLOSED\":\n\t\treturn mergeCellStyle.Foreground(pr.Ctx.Styles.Colors.ClosedPR).\n\t\t\tRender(constants.ClosedIcon)\n\tcase \"MERGED\":\n\t\treturn mergeCellStyle.Foreground(pr.Ctx.Styles.Colors.MergedPR).\n\t\t\tRender(constants.MergedIcon)\n\tdefault:\n\t\treturn mergeCellStyle.Foreground(pr.Ctx.Theme.FaintText).Render(\"-\")\n\t}\n}\n\nfunc (pr *PullRequest) GetStatusChecksRollup() checks.CommitState {\n\tif pr.Data == nil || pr.Data.Primary == nil {\n\t\treturn checks.CommitStateUnknown\n\t}\n\tcommits := pr.Data.Primary.Commits.Nodes\n\tif len(commits) == 0 {\n\t\treturn checks.CommitStateUnknown\n\t}\n\n\treturn checks.CommitState(commits[0].Commit.StatusCheckRollup.State)\n}\n\nfunc (pr *PullRequest) renderCiStatus() string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"-\"\n\t}\n\n\taccStatus := pr.GetStatusChecksRollup()\n\tciCellStyle := pr.getTextStyle()\n\n\tswitch accStatus {\n\tcase checks.CommitStateSuccess:\n\t\tciCellStyle = ciCellStyle.Foreground(pr.Ctx.Theme.SuccessText)\n\t\treturn ciCellStyle.Render(constants.SuccessIcon)\n\tcase checks.CommitStateExpected, checks.CommitStatePending:\n\t\treturn ciCellStyle.Render(pr.Ctx.Styles.Common.WaitingGlyph)\n\tcase checks.CommitStateError, checks.CommitStateFailure:\n\t\tciCellStyle = ciCellStyle.Foreground(pr.Ctx.Theme.ErrorText)\n\t\treturn ciCellStyle.Render(constants.FailureIcon)\n\tdefault:\n\t\tciCellStyle = ciCellStyle.Foreground(pr.Ctx.Theme.FaintText)\n\t\treturn ciCellStyle.Render(constants.EmptyIcon)\n\t}\n}\n\nfunc (pr *PullRequest) RenderLines(isSelected bool) string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"-\"\n\t}\n\tdeletions := max(pr.Data.Primary.Deletions, 0)\n\n\tvar additionsFg, deletionsFg compat.AdaptiveColor\n\tadditionsFg = pr.Ctx.Theme.SuccessText\n\tdeletionsFg = pr.Ctx.Theme.ErrorText\n\n\tbaseStyle := lipgloss.NewStyle()\n\tif isSelected {\n\t\tbaseStyle = baseStyle.Background(pr.Ctx.Theme.SelectedBackground)\n\t}\n\n\tadditionsText := baseStyle.\n\t\tForeground(additionsFg).\n\t\tRender(fmt.Sprintf(\"+%s\", components.FormatNumber(pr.Data.Primary.Additions)))\n\tdeletionsText := baseStyle.\n\t\tForeground(deletionsFg).\n\t\tRender(fmt.Sprintf(\"-%s\", components.FormatNumber(deletions)))\n\n\treturn pr.getTextStyle().Render(\n\t\tkeepSameSpacesOnAddDeletions(\n\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Left,\n\t\t\t\tadditionsText,\n\t\t\t\tbaseStyle.Render(\" \"),\n\t\t\t\tdeletionsText,\n\t\t\t)),\n\t)\n}\n\nfunc keepSameSpacesOnAddDeletions(str string) string {\n\tstrAsList := strings.Split(str, \" \")\n\treturn fmt.Sprintf(\n\t\t\"%7s\",\n\t\tstrAsList[0],\n\t) + \" \" + fmt.Sprintf(\n\t\t\"%7s\",\n\t\tstrAsList[1],\n\t)\n}\n\nfunc (pr *PullRequest) renderTitle() string {\n\treturn components.RenderIssueTitle(\n\t\tpr.Ctx,\n\t\tpr.Data.Primary.State,\n\t\tpr.Data.Primary.Title,\n\t\tpr.Data.Primary.Number,\n\t)\n}\n\nfunc (pr *PullRequest) renderExtendedTitle(isSelected bool) string {\n\tbaseStyle := lipgloss.NewStyle()\n\tif isSelected {\n\t\tbaseStyle = baseStyle.Foreground(pr.Ctx.Theme.SecondaryText).\n\t\t\tBackground(pr.Ctx.Theme.SelectedBackground)\n\t}\n\n\tauthor := baseStyle.Bold(true).Render(fmt.Sprintf(\"@%s\",\n\t\tpr.Data.Primary.GetAuthor(pr.Ctx.Theme, pr.ShowAuthorIcon)))\n\ttop := lipgloss.JoinHorizontal(lipgloss.Top, pr.Data.Primary.Repository.NameWithOwner,\n\t\tfmt.Sprintf(\" #%d by %s\", pr.Data.Primary.Number, author))\n\tbranchHidden := pr.Ctx.Config.Defaults.Layout.Prs.Base.Hidden\n\tif branchHidden == nil || !*branchHidden {\n\t\tbranch := baseStyle.Render(pr.Data.Primary.HeadRefName)\n\t\ttop = lipgloss.JoinHorizontal(lipgloss.Top, top, baseStyle.Render(\" · \"), branch)\n\t}\n\ttitle := pr.Data.Primary.Title\n\tvar titleColumn table.Column\n\tfor _, column := range pr.Columns {\n\t\tif column.Grow != nil && *column.Grow {\n\t\t\ttitleColumn = column\n\t\t}\n\t}\n\twidth := titleColumn.ComputedWidth - 2\n\ttop = baseStyle.Foreground(pr.Ctx.Theme.SecondaryText).\n\t\tWidth(width).\n\t\tMaxWidth(width).\n\t\tHeight(1).\n\t\tMaxHeight(1).\n\t\tRender(top)\n\ttitle = baseStyle.Foreground(pr.Ctx.Theme.PrimaryText).Bold(true).Width(width).MaxWidth(\n\t\twidth).Height(1).MaxHeight(1).Render(title)\n\n\treturn baseStyle.Render(lipgloss.JoinVertical(lipgloss.Left, top, title))\n}\n\nfunc (pr *PullRequest) renderAuthor() string {\n\treturn pr.getTextStyle().Render(pr.Data.Primary.GetAuthor(pr.Ctx.Theme, pr.ShowAuthorIcon))\n}\n\nfunc (pr *PullRequest) renderAssignees() string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"\"\n\t}\n\tassignees := make([]string, 0, len(pr.Data.Primary.Assignees.Nodes))\n\tfor _, assignee := range pr.Data.Primary.Assignees.Nodes {\n\t\tassignees = append(assignees, assignee.Login)\n\t}\n\treturn pr.getTextStyle().Render(strings.Join(assignees, \",\"))\n}\n\nfunc (pr *PullRequest) renderRepoName() string {\n\trepoName := \"\"\n\tif !pr.Ctx.Config.Theme.Ui.Table.Compact {\n\t\trepoName = pr.Data.Primary.Repository.NameWithOwner\n\t} else {\n\t\trepoName = pr.Data.Primary.HeadRepository.Name\n\t}\n\treturn pr.getTextStyle().Foreground(pr.Ctx.Theme.FaintText).Render(repoName)\n}\n\nfunc (pr *PullRequest) renderUpdateAt() string {\n\ttimeFormat := pr.Ctx.Config.Defaults.DateFormat\n\n\tupdatedAtOutput := \"\"\n\tt := pr.Branch.LastUpdatedAt\n\tif pr.Data.Primary != nil {\n\t\tt = &pr.Data.Primary.UpdatedAt\n\t}\n\n\tif t == nil {\n\t\treturn \"\"\n\t}\n\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\tupdatedAtOutput = utils.TimeElapsed(*t)\n\t} else {\n\t\tupdatedAtOutput = t.Format(timeFormat)\n\t}\n\n\treturn pr.getTextStyle().Foreground(pr.Ctx.Theme.FaintText).Render(updatedAtOutput)\n}\n\nfunc (pr *PullRequest) renderCreatedAt() string {\n\ttimeFormat := pr.Ctx.Config.Defaults.DateFormat\n\n\tcreatedAtOutput := \"\"\n\tt := pr.Branch.CreatedAt\n\tif pr.Data.Primary != nil {\n\t\tt = &pr.Data.Primary.CreatedAt\n\t}\n\n\tif t == nil {\n\t\treturn \"\"\n\t}\n\n\tif timeFormat == \"\" || timeFormat == \"relative\" {\n\t\tcreatedAtOutput = utils.TimeElapsed(*t)\n\t} else {\n\t\tcreatedAtOutput = t.Format(timeFormat)\n\t}\n\n\treturn pr.getTextStyle().Foreground(pr.Ctx.Theme.FaintText).Render(createdAtOutput)\n}\n\nfunc (pr *PullRequest) renderBaseName() string {\n\tif pr.Data.Primary == nil {\n\t\treturn \"\"\n\t}\n\treturn pr.getTextStyle().Render(pr.Data.Primary.BaseRefName)\n}\n\nfunc (pr *PullRequest) RenderState() string {\n\tswitch pr.Data.Primary.State {\n\tcase \"OPEN\":\n\t\tif pr.Data.Primary.IsInMergeQueue {\n\t\t\treturn constants.MergeQueueIcon + \" Queued\"\n\t\t}\n\t\tif pr.Data.Primary.IsDraft {\n\t\t\treturn constants.DraftIcon + \" Draft\"\n\t\t} else {\n\t\t\treturn constants.OpenIcon + \" Open\"\n\t\t}\n\tcase \"CLOSED\":\n\t\treturn constants.ClosedIcon + \" Closed\"\n\tcase \"MERGED\":\n\t\treturn constants.MergedIcon + \" Merged\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc (pr *PullRequest) RenderMergeStateStatus() string {\n\tswitch pr.Data.Primary.MergeStateStatus {\n\tcase \"CLEAN\":\n\t\treturn constants.SuccessIcon + \" Up-to-date\"\n\tcase \"BLOCKED\":\n\t\treturn constants.BlockedIcon + \" Blocked\"\n\tcase \"BEHIND\":\n\t\treturn constants.BehindIcon + \" Behind\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc (pr *PullRequest) ToTableRow(isSelected bool) table.Row {\n\tif !pr.Ctx.Config.Theme.Ui.Table.Compact {\n\t\treturn table.Row{\n\t\t\tpr.renderState(),\n\t\t\tpr.renderExtendedTitle(isSelected),\n\t\t\tpr.renderAssignees(),\n\t\t\tpr.renderBaseName(),\n\t\t\tpr.renderNumComments(),\n\t\t\tpr.renderReviewStatus(),\n\t\t\tpr.renderCiStatus(),\n\t\t\tpr.RenderLines(isSelected),\n\t\t\tpr.renderUpdateAt(),\n\t\t\tpr.renderCreatedAt(),\n\t\t}\n\t}\n\n\treturn table.Row{\n\t\tpr.renderState(),\n\t\tpr.renderRepoName(),\n\t\tpr.renderTitle(),\n\t\tpr.renderAuthor(),\n\t\tpr.renderAssignees(),\n\t\tpr.renderBaseName(),\n\t\tpr.renderNumComments(),\n\t\tpr.renderReviewStatus(),\n\t\tpr.renderCiStatus(),\n\t\tpr.RenderLines(isSelected),\n\t\tpr.renderUpdateAt(),\n\t\tpr.renderCreatedAt(),\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prrow/prrow_test.go",
    "content": "package prrow\n\nimport (\n\t\"testing\"\n\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n\tchecks \"github.com/dlvhdr/x/gh-checks\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n)\n\nfunc TestGetStatusChecksRollup(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpr       *PullRequest\n\t\texpected checks.CommitState\n\t}{\n\t\t{\n\t\t\tname:     \"nil Data returns Unknown\",\n\t\t\tpr:       &PullRequest{Data: nil},\n\t\t\texpected: checks.CommitStateUnknown,\n\t\t},\n\t\t{\n\t\t\tname:     \"nil Primary returns Unknown\",\n\t\t\tpr:       &PullRequest{Data: &Data{Primary: nil}},\n\t\t\texpected: checks.CommitStateUnknown,\n\t\t},\n\t\t{\n\t\t\tname: \"empty Commits returns Unknown\",\n\t\t\tpr: &PullRequest{\n\t\t\t\tData: &Data{\n\t\t\t\t\tPrimary: &data.PullRequestData{\n\t\t\t\t\t\tCommits: data.Commits{\n\t\t\t\t\t\t\tNodes: []struct {\n\t\t\t\t\t\t\t\tCommit struct {\n\t\t\t\t\t\t\t\t\tDeployments struct {\n\t\t\t\t\t\t\t\t\t\tNodes []struct {\n\t\t\t\t\t\t\t\t\t\t\tTask        graphql.String\n\t\t\t\t\t\t\t\t\t\t\tDescription graphql.String\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\t\t\t\t\t\t\tCommitUrl         graphql.String\n\t\t\t\t\t\t\t\t\tStatusCheckRollup struct {\n\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: checks.CommitStateUnknown,\n\t\t},\n\t\t{\n\t\t\tname: \"SUCCESS state returns Success\",\n\t\t\tpr: &PullRequest{\n\t\t\t\tData: &Data{\n\t\t\t\t\tPrimary: &data.PullRequestData{\n\t\t\t\t\t\tCommits: data.Commits{\n\t\t\t\t\t\t\tNodes: []struct {\n\t\t\t\t\t\t\t\tCommit struct {\n\t\t\t\t\t\t\t\t\tDeployments struct {\n\t\t\t\t\t\t\t\t\t\tNodes []struct {\n\t\t\t\t\t\t\t\t\t\t\tTask        graphql.String\n\t\t\t\t\t\t\t\t\t\t\tDescription graphql.String\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\t\t\t\t\t\t\tCommitUrl         graphql.String\n\t\t\t\t\t\t\t\t\tStatusCheckRollup struct {\n\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tCommit: struct {\n\t\t\t\t\t\t\t\t\t\tDeployments struct {\n\t\t\t\t\t\t\t\t\t\t\tNodes []struct {\n\t\t\t\t\t\t\t\t\t\t\t\tTask        graphql.String\n\t\t\t\t\t\t\t\t\t\t\t\tDescription graphql.String\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\t\t\t\t\t\t\t\tCommitUrl         graphql.String\n\t\t\t\t\t\t\t\t\t\tStatusCheckRollup struct {\n\t\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t\t\tStatusCheckRollup: struct {\n\t\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t\t\t\tState: \"SUCCESS\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: checks.CommitStateSuccess,\n\t\t},\n\t\t{\n\t\t\tname: \"FAILURE state returns Failure\",\n\t\t\tpr: &PullRequest{\n\t\t\t\tData: &Data{\n\t\t\t\t\tPrimary: &data.PullRequestData{\n\t\t\t\t\t\tCommits: data.Commits{\n\t\t\t\t\t\t\tNodes: []struct {\n\t\t\t\t\t\t\t\tCommit struct {\n\t\t\t\t\t\t\t\t\tDeployments struct {\n\t\t\t\t\t\t\t\t\t\tNodes []struct {\n\t\t\t\t\t\t\t\t\t\t\tTask        graphql.String\n\t\t\t\t\t\t\t\t\t\t\tDescription graphql.String\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\t\t\t\t\t\t\tCommitUrl         graphql.String\n\t\t\t\t\t\t\t\t\tStatusCheckRollup struct {\n\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tCommit: struct {\n\t\t\t\t\t\t\t\t\t\tDeployments struct {\n\t\t\t\t\t\t\t\t\t\t\tNodes []struct {\n\t\t\t\t\t\t\t\t\t\t\t\tTask        graphql.String\n\t\t\t\t\t\t\t\t\t\t\t\tDescription graphql.String\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\t\t\t\t\t\t\t\tCommitUrl         graphql.String\n\t\t\t\t\t\t\t\t\t\tStatusCheckRollup struct {\n\t\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t\t\tStatusCheckRollup: struct {\n\t\t\t\t\t\t\t\t\t\t\tState graphql.String\n\t\t\t\t\t\t\t\t\t\t}{\n\t\t\t\t\t\t\t\t\t\t\tState: \"FAILURE\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: checks.CommitStateFailure,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.pr.GetStatusChecksRollup()\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"GetStatusChecksRollup() = %v, want %v\", result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prssection/checkout.go",
    "content": "package prssection\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc (m *Model) checkout() (tea.Cmd, error) {\n\tpr := m.GetCurrRow()\n\tif pr == nil {\n\t\treturn nil, errors.New(\"no pr selected\")\n\t}\n\n\trepoName := pr.GetRepoNameWithOwner()\n\trepoPath, ok := common.GetRepoLocalPath(repoName, m.Ctx.Config.RepoPaths)\n\n\tif !ok {\n\t\treturn nil, errors.New(\n\t\t\t\"local path to repo not specified, set one in your config.yml under repoPaths\",\n\t\t)\n\t}\n\n\tprNumber := pr.GetNumber()\n\ttaskId := fmt.Sprintf(\"checkout_%d\", prNumber)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Checking out PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been checked out at %s\", prNumber, repoPath),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tc := exec.Command(\n\t\t\t\"gh\",\n\t\t\t\"pr\",\n\t\t\t\"checkout\",\n\t\t\tfmt.Sprint(m.GetCurrRow().GetNumber()),\n\t\t)\n\t\tuserHomeDir, _ := os.UserHomeDir()\n\t\tif strings.HasPrefix(repoPath, \"~\") {\n\t\t\trepoPath = strings.Replace(repoPath, \"~\", userHomeDir, 1)\n\t\t}\n\n\t\tc.Dir = repoPath\n\t\terr := c.Run()\n\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t}), nil\n}\n"
  },
  {
    "path": "internal/tui/components/prssection/diff.go",
    "content": "package prssection\n\nimport (\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n)\n\nfunc (m Model) diff() tea.Cmd {\n\tcurrRowData := m.GetCurrRow()\n\tif currRowData == nil {\n\t\treturn nil\n\t}\n\n\treturn common.DiffPR(\n\t\tcurrRowData.GetNumber(),\n\t\tcurrRowData.GetRepoNameWithOwner(),\n\t\tm.Ctx.Config.GetFullScreenDiffPagerEnv(),\n\t)\n}\n"
  },
  {
    "path": "internal/tui/components/prssection/prssection.go",
    "content": "package prssection\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nconst SectionType = \"pr\"\n\ntype Model struct {\n\tsection.BaseModel\n\tPrs []prrow.Data\n}\n\nfunc NewModel(\n\tid int,\n\tctx *context.ProgramContext,\n\tcfg config.PrsSectionConfig,\n\tlastUpdated time.Time,\n\tcreatedAt time.Time,\n) Model {\n\tm := Model{}\n\tm.BaseModel = section.NewModel(\n\t\tctx,\n\t\tsection.NewSectionOptions{\n\t\t\tId:          id,\n\t\t\tConfig:      cfg.ToSectionConfig(),\n\t\t\tType:        SectionType,\n\t\t\tColumns:     GetSectionColumns(cfg, ctx),\n\t\t\tSingular:    m.GetItemSingularForm(),\n\t\t\tPlural:      m.GetItemPluralForm(),\n\t\t\tLastUpdated: lastUpdated,\n\t\t\tCreatedAt:   createdAt,\n\t\t},\n\t)\n\tm.Prs = []prrow.Data{}\n\n\treturn m\n}\n\nfunc (m *Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {\n\tvar cmd tea.Cmd\n\tvar err error\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\n\t\tif m.IsSearchFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.SearchBar.SetValue(m.SearchValue)\n\t\t\t\tblinkCmd := m.SetIsSearching(false)\n\t\t\t\treturn m, blinkCmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tm.SearchValue = m.SearchBar.Value()\n\t\t\t\tm.SyncSmartFilterWithSearchValue()\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tif m.IsPromptConfirmationFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tcmd = m.SetIsPromptConfirmationShown(false)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tinput := m.PromptConfirmationBox.Value()\n\t\t\t\taction := m.GetPromptConfirmationAction()\n\t\t\t\tpr := m.GetCurrRow()\n\t\t\t\tsid := tasks.SectionIdentifier{Id: m.Id, Type: SectionType}\n\t\t\t\tif input == \"\" || input == \"Y\" || input == \"y\" {\n\t\t\t\t\tswitch action {\n\t\t\t\t\tcase \"close\":\n\t\t\t\t\t\tcmd = tasks.ClosePR(m.Ctx, sid, pr)\n\t\t\t\t\tcase \"reopen\":\n\t\t\t\t\t\tcmd = tasks.ReopenPR(m.Ctx, sid, pr)\n\t\t\t\t\tcase \"ready\":\n\t\t\t\t\t\tcmd = tasks.PRReady(m.Ctx, sid, pr)\n\t\t\t\t\tcase \"merge\":\n\t\t\t\t\t\tcmd = tasks.MergePR(m.Ctx, sid, pr)\n\t\t\t\t\tcase \"update\":\n\t\t\t\t\t\tcmd = tasks.UpdatePR(m.Ctx, sid, pr)\n\t\t\t\t\tcase \"approveWorkflows\":\n\t\t\t\t\t\tcmd = tasks.ApproveWorkflows(m.Ctx, sid, pr)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tblinkCmd := m.SetIsPromptConfirmationShown(false)\n\n\t\t\t\treturn m, tea.Batch(cmd, blinkCmd)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tswitch {\n\t\tcase key.Matches(msg, keys.PRKeys.Diff):\n\t\t\tcmd = m.diff()\n\n\t\tcase key.Matches(msg, keys.PRKeys.ToggleSmartFiltering):\n\t\t\tbefore := m.IsFilteredByCurrentRemote\n\n\t\t\t// If we're filtering by the current repo - we want to remove it\n\t\t\t// If there's no repo filter we want to add the current repo filter.\n\t\t\tif m.HasCurrentRepoNameInConfiguredFilter() || !m.HasRepoNameInConfiguredFilter() {\n\t\t\t\tm.IsFilteredByCurrentRemote = !before\n\t\t\t}\n\t\t\tlog.Debug(\n\t\t\t\t\"toggled smart filtering\",\n\t\t\t\t\"before\",\n\t\t\t\tbefore,\n\t\t\t\t\"after\",\n\t\t\t\tm.IsFilteredByCurrentRemote,\n\t\t\t)\n\t\t\tsearchValue := m.GetSearchValue()\n\t\t\tif m.SearchValue != searchValue {\n\t\t\t\tm.SearchValue = searchValue\n\t\t\t\tm.SearchBar.SetValue(searchValue)\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.ResetRows()\n\t\t\t\treturn m, tea.Batch(m.FetchNextPageSectionRows()...)\n\t\t\t}\n\n\t\tcase key.Matches(msg, keys.PRKeys.Checkout):\n\t\t\tcmd, err = m.checkout()\n\t\t\tif err != nil {\n\t\t\t\tm.Ctx.Error = err\n\t\t\t}\n\n\t\tcase key.Matches(msg, keys.PRKeys.WatchChecks):\n\t\t\tcmd = m.watchChecks()\n\t\t}\n\n\tcase tasks.UpdatePRMsg:\n\t\tfor i, currPr := range m.Prs {\n\t\t\tif currPr.Primary.Number != msg.PrNumber {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif msg.IsClosed != nil {\n\t\t\t\tif *msg.IsClosed {\n\t\t\t\t\tcurrPr.Primary.State = \"CLOSED\"\n\t\t\t\t} else {\n\t\t\t\t\tcurrPr.Primary.State = \"OPEN\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msg.NewComment != nil {\n\t\t\t\tcurrPr.Enriched.Comments.Nodes = append(\n\t\t\t\t\tcurrPr.Enriched.Comments.Nodes, *msg.NewComment)\n\t\t\t}\n\t\t\tif msg.AddedAssignees != nil {\n\t\t\t\tcurrPr.Primary.Assignees.Nodes = addAssignees(\n\t\t\t\t\tcurrPr.Primary.Assignees.Nodes, msg.AddedAssignees.Nodes)\n\t\t\t}\n\t\t\tif msg.RemovedAssignees != nil {\n\t\t\t\tcurrPr.Primary.Assignees.Nodes = removeAssignees(\n\t\t\t\t\tcurrPr.Primary.Assignees.Nodes, msg.RemovedAssignees.Nodes)\n\t\t\t}\n\t\t\tif msg.ReadyForReview != nil && *msg.ReadyForReview {\n\t\t\t\tcurrPr.Primary.IsDraft = false\n\t\t\t}\n\t\t\tif msg.IsMerged != nil && *msg.IsMerged {\n\t\t\t\tcurrPr.Primary.State = \"MERGED\"\n\t\t\t\tcurrPr.Primary.Mergeable = \"\"\n\t\t\t}\n\t\t\tm.Prs[i] = currPr\n\t\t\tm.SetIsLoading(false)\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\tbreak\n\t\t}\n\n\tcase SectionPullRequestsFetchedMsg:\n\t\tif m.LastFetchTaskId == msg.TaskId {\n\t\t\tif m.PageInfo != nil {\n\t\t\t\tm.Prs = append(m.Prs, msg.Prs...)\n\t\t\t} else {\n\t\t\t\tm.Prs = msg.Prs\n\t\t\t}\n\t\t\tm.TotalCount = msg.TotalCount\n\t\t\tm.PageInfo = &msg.PageInfo\n\t\t\tm.SetIsLoading(false)\n\t\t\tm.Table.SetRows(m.BuildRows())\n\t\t\tm.Table.UpdateLastUpdated(time.Now())\n\t\t\tm.UpdateTotalItemsCount(m.TotalCount)\n\t\t}\n\t}\n\n\tsearch, searchCmd := m.SearchBar.Update(msg)\n\tm.Table.SetRows(m.BuildRows())\n\tm.SearchBar = search\n\n\tprompt, promptCmd := m.PromptConfirmationBox.Update(msg)\n\tm.PromptConfirmationBox = prompt\n\n\ttable, tableCmd := m.Table.Update(msg)\n\tm.Table = table\n\n\treturn m, tea.Batch(cmd, searchCmd, promptCmd, tableCmd)\n}\n\nfunc (m *Model) EnrichPR(data data.EnrichedPullRequestData) {\n\tfor i, currPr := range m.Prs {\n\t\tif currPr.Primary.Number != data.Number {\n\t\t\tcontinue\n\t\t}\n\n\t\tm.Prs[i].IsEnriched = true\n\t\tm.Prs[i].Enriched = data\n\t}\n}\n\nfunc GetSectionColumns(\n\tcfg config.PrsSectionConfig,\n\tctx *context.ProgramContext,\n) []table.Column {\n\tdLayout := ctx.Config.Defaults.Layout.Prs\n\tsLayout := cfg.Layout\n\n\tupdatedAtLayout := config.MergeColumnConfigs(\n\t\tdLayout.UpdatedAt,\n\t\tsLayout.UpdatedAt,\n\t)\n\tcreatedAtLayout := config.MergeColumnConfigs(\n\t\tdLayout.CreatedAt,\n\t\tsLayout.CreatedAt,\n\t)\n\trepoLayout := config.MergeColumnConfigs(dLayout.Repo, sLayout.Repo)\n\ttitleLayout := config.MergeColumnConfigs(dLayout.Title, sLayout.Title)\n\tauthorLayout := config.MergeColumnConfigs(dLayout.Author, sLayout.Author)\n\tassigneesLayout := config.MergeColumnConfigs(\n\t\tdLayout.Assignees,\n\t\tsLayout.Assignees,\n\t)\n\tbaseLayout := config.MergeColumnConfigs(dLayout.Base, sLayout.Base)\n\tnumCommentsLayout := config.MergeColumnConfigs(\n\t\tdLayout.NumComments,\n\t\tsLayout.NumComments,\n\t)\n\treviewStatusLayout := config.MergeColumnConfigs(\n\t\tdLayout.ReviewStatus,\n\t\tsLayout.ReviewStatus,\n\t)\n\tstateLayout := config.MergeColumnConfigs(dLayout.State, sLayout.State)\n\tciLayout := config.MergeColumnConfigs(dLayout.Ci, sLayout.Ci)\n\tlinesLayout := config.MergeColumnConfigs(dLayout.Lines, sLayout.Lines)\n\n\tif !ctx.Config.Theme.Ui.Table.Compact {\n\t\treturn []table.Column{\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  utils.IntPtr(3),\n\t\t\t\tHidden: stateLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Title\",\n\t\t\t\tGrow:   utils.BoolPtr(true),\n\t\t\t\tHidden: titleLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Assignees\",\n\t\t\t\tWidth:  assigneesLayout.Width,\n\t\t\t\tHidden: assigneesLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Base\",\n\t\t\t\tWidth:  baseLayout.Width,\n\t\t\t\tHidden: baseLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  constants.CommentsIcon,\n\t\t\t\tWidth:  utils.IntPtr(4),\n\t\t\t\tHidden: numCommentsLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"󰯢\",\n\t\t\t\tWidth:  utils.IntPtr(4),\n\t\t\t\tHidden: reviewStatusLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  &ctx.Styles.PrSection.CiCellWidth,\n\t\t\t\tGrow:   new(bool),\n\t\t\t\tHidden: ciLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  linesLayout.Width,\n\t\t\t\tHidden: linesLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"󱦻\",\n\t\t\t\tWidth:  updatedAtLayout.Width,\n\t\t\t\tHidden: updatedAtLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"󱡢\",\n\t\t\t\tWidth:  createdAtLayout.Width,\n\t\t\t\tHidden: createdAtLayout.Hidden,\n\t\t\t},\n\t\t}\n\t}\n\n\treturn []table.Column{\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  utils.IntPtr(3),\n\t\t\tHidden: stateLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  repoLayout.Width,\n\t\t\tHidden: repoLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Title\",\n\t\t\tGrow:   utils.BoolPtr(true),\n\t\t\tHidden: titleLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Author\",\n\t\t\tWidth:  authorLayout.Width,\n\t\t\tHidden: authorLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Assignees\",\n\t\t\tWidth:  assigneesLayout.Width,\n\t\t\tHidden: assigneesLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Base\",\n\t\t\tWidth:  baseLayout.Width,\n\t\t\tHidden: baseLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  constants.CommentsIcon,\n\t\t\tWidth:  utils.IntPtr(4),\n\t\t\tHidden: numCommentsLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󰯢\",\n\t\t\tWidth:  utils.IntPtr(4),\n\t\t\tHidden: reviewStatusLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  &ctx.Styles.PrSection.CiCellWidth,\n\t\t\tGrow:   new(bool),\n\t\t\tHidden: ciLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  linesLayout.Width,\n\t\t\tHidden: linesLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󱦻\",\n\t\t\tWidth:  updatedAtLayout.Width,\n\t\t\tHidden: updatedAtLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󱡢\",\n\t\t\tWidth:  createdAtLayout.Width,\n\t\t\tHidden: createdAtLayout.Hidden,\n\t\t},\n\t}\n}\n\nfunc (m Model) BuildRows() []table.Row {\n\tvar rows []table.Row\n\tcurrItem := m.Table.GetCurrItem()\n\tfor i, currPr := range m.Prs {\n\t\tprModel := prrow.PullRequest{\n\t\t\tCtx:     m.Ctx,\n\t\t\tData:    &currPr,\n\t\t\tColumns: m.Table.Columns, ShowAuthorIcon: m.ShowAuthorIcon,\n\t\t}\n\t\trows = append(\n\t\t\trows,\n\t\t\tprModel.ToTableRow(currItem == i),\n\t\t)\n\t}\n\n\tif rows == nil {\n\t\trows = []table.Row{}\n\t}\n\n\treturn rows\n}\n\nfunc (m *Model) NumRows() int {\n\treturn len(m.Prs)\n}\n\ntype SectionPullRequestsFetchedMsg struct {\n\tPrs        []prrow.Data\n\tTotalCount int\n\tPageInfo   data.PageInfo\n\tTaskId     string\n}\n\nfunc (m *Model) GetCurrRow() data.RowData {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.Prs) {\n\t\treturn nil\n\t}\n\tpr := m.Prs[idx]\n\treturn &pr\n}\n\nfunc (m *Model) FetchNextPageSectionRows() []tea.Cmd {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tif m.PageInfo != nil && !m.PageInfo.HasNextPage {\n\t\treturn nil\n\t}\n\n\tvar cmds []tea.Cmd\n\n\tstartCursor := time.Now().String()\n\tif m.PageInfo != nil {\n\t\tstartCursor = m.PageInfo.StartCursor\n\t}\n\ttaskId := fmt.Sprintf(\"fetching_prs_%d_%s\", m.Id, startCursor)\n\tisFirstFetch := m.LastFetchTaskId == \"\"\n\tm.LastFetchTaskId = taskId\n\ttask := context.Task{\n\t\tId:        taskId,\n\t\tStartText: fmt.Sprintf(`Fetching PRs for \"%s\"`, m.Config.Title),\n\t\tFinishedText: fmt.Sprintf(\n\t\t\t`PRs for \"%s\" have been fetched`,\n\t\t\tm.Config.Title,\n\t\t),\n\t\tState: context.TaskStart,\n\t\tError: nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\tcmds = append(cmds, startCmd)\n\n\tfetchCmd := func() tea.Msg {\n\t\tlimit := m.Config.Limit\n\t\tif limit == nil {\n\t\t\tlimit = &m.Ctx.Config.Defaults.PrsLimit\n\t\t}\n\n\t\tres, err := data.FetchPullRequests(m.GetFilters(), *limit, m.PageInfo)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   m.Id,\n\t\t\t\tSectionType: m.Type,\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tErr:         err,\n\t\t\t}\n\t\t}\n\n\t\tprs := make([]prrow.Data, 0)\n\t\tfor _, pr := range res.Prs {\n\t\t\tprs = append(prs, prrow.Data{Primary: &pr})\n\t\t}\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: m.Type,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg: SectionPullRequestsFetchedMsg{\n\t\t\t\tPrs:        prs,\n\t\t\t\tTotalCount: res.TotalCount,\n\t\t\t\tPageInfo:   res.PageInfo,\n\t\t\t\tTaskId:     taskId,\n\t\t\t},\n\t\t}\n\t}\n\tcmds = append(cmds, fetchCmd)\n\n\tm.IsLoading = true\n\tif isFirstFetch {\n\t\tm.SetIsLoading(true)\n\t\tcmds = append(cmds, m.Table.StartLoadingSpinner())\n\t}\n\n\treturn cmds\n}\n\nfunc (m *Model) ResetRows() {\n\tm.Prs = nil\n\tm.BaseModel.ResetRows()\n}\n\nfunc FetchAllSections(\n\tctx *context.ProgramContext,\n\tprs []section.Section,\n) (sections []section.Section, fetchAllCmd tea.Cmd) {\n\tfetchPRsCmds := make([]tea.Cmd, 0, len(ctx.Config.PRSections))\n\tsections = make([]section.Section, 0, len(ctx.Config.PRSections))\n\tfor i, sectionConfig := range ctx.Config.PRSections {\n\t\tsectionModel := NewModel(\n\t\t\ti+1, // 0 is the search section\n\t\t\tctx,\n\t\t\tsectionConfig,\n\t\t\ttime.Now(),\n\t\t\ttime.Now(),\n\t\t)\n\t\tif len(prs) > 0 && len(prs) >= i+1 && prs[i+1] != nil {\n\t\t\toldSection := prs[i+1].(*Model)\n\t\t\tsectionModel.Prs = oldSection.Prs\n\t\t\tsectionModel.LastFetchTaskId = oldSection.LastFetchTaskId\n\t\t}\n\t\tif sectionConfig.Layout.AuthorIcon.Hidden != nil {\n\t\t\tsectionModel.ShowAuthorIcon = !*sectionConfig.Layout.AuthorIcon.Hidden\n\t\t}\n\t\tsections = append(sections, &sectionModel)\n\t\tfetchPRsCmds = append(\n\t\t\tfetchPRsCmds,\n\t\t\tsectionModel.FetchNextPageSectionRows()...)\n\t}\n\treturn sections, tea.Batch(fetchPRsCmds...)\n}\n\nfunc addAssignees(assignees, addedAssignees []data.Assignee) []data.Assignee {\n\tnewAssignees := assignees\n\tfor _, assignee := range addedAssignees {\n\t\tif !assigneesContains(newAssignees, assignee) {\n\t\t\tnewAssignees = append(newAssignees, assignee)\n\t\t}\n\t}\n\n\treturn newAssignees\n}\n\nfunc removeAssignees(\n\tassignees, removedAssignees []data.Assignee,\n) []data.Assignee {\n\tnewAssignees := []data.Assignee{}\n\tfor _, assignee := range assignees {\n\t\tif !assigneesContains(removedAssignees, assignee) {\n\t\t\tnewAssignees = append(newAssignees, assignee)\n\t\t}\n\t}\n\n\treturn newAssignees\n}\n\nfunc assigneesContains(assignees []data.Assignee, assignee data.Assignee) bool {\n\treturn slices.Contains(assignees, assignee)\n}\n\nfunc (m Model) GetItemSingularForm() string {\n\treturn \"PR\"\n}\n\nfunc (m Model) GetItemPluralForm() string {\n\treturn \"PRs\"\n}\n\nfunc (m Model) GetTotalCount() int {\n\treturn m.TotalCount\n}\n\nfunc (m *Model) SetIsLoading(val bool) {\n\tm.IsLoading = val\n\tm.Table.SetIsLoading(val)\n}\n\nfunc (m Model) GetPagerContent() string {\n\tpagerContent := \"\"\n\ttimeElapsed := utils.TimeElapsed(m.LastUpdated())\n\tif timeElapsed == \"now\" {\n\t\ttimeElapsed = \"just now\"\n\t} else {\n\t\ttimeElapsed = fmt.Sprintf(\"~%v ago\", timeElapsed)\n\t}\n\tif m.TotalCount > 0 {\n\t\tpagerContent = fmt.Sprintf(\n\t\t\t\"%v Updated %v • %v %v/%v (fetched %v)\",\n\t\t\tconstants.WaitingIcon,\n\t\t\ttimeElapsed,\n\t\t\tm.SingularForm,\n\t\t\tm.Table.GetCurrItem()+1,\n\t\t\tm.TotalCount,\n\t\t\tlen(m.Table.Rows),\n\t\t)\n\t}\n\tpager := m.Ctx.Styles.ListViewPort.PagerStyle.Render(pagerContent)\n\treturn pager\n}\n"
  },
  {
    "path": "internal/tui/components/prssection/prssection_test.go",
    "content": "package prssection\n\nimport (\n\t\"testing\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prompt\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\n// newTestModel creates a minimal Model with the prompt confirmation box\n// focused and a single PR row so that GetCurrRow returns non-nil.\nfunc newTestModel(action string) Model {\n\tctx := &context.ProgramContext{\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn func() tea.Msg { return nil }\n\t\t},\n\t}\n\tm := Model{\n\t\tBaseModel: section.BaseModel{\n\t\t\tCtx:                       ctx,\n\t\t\tIsPromptConfirmationShown: true,\n\t\t\tPromptConfirmationAction:  action,\n\t\t\tPromptConfirmationBox:     prompt.NewModel(ctx),\n\t\t},\n\t\tPrs: []prrow.Data{\n\t\t\t{Primary: &data.PullRequestData{Number: 42}},\n\t\t},\n\t}\n\tm.PromptConfirmationBox.Focus()\n\treturn m\n}\n\nfunc TestConfirmation_AcceptWithEmptyInput(t *testing.T) {\n\t// Pressing Enter without typing anything should confirm, since the\n\t// prompt says (Y/n) indicating Y is the default.\n\tm := newTestModel(\"close\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\trequire.NotNil(t, cmd, \"empty input (default Y) should execute the action\")\n\trequire.False(t, m.IsPromptConfirmationShown,\n\t\t\"confirmation prompt should be dismissed\")\n}\n\nfunc TestConfirmation_AcceptWithLowercaseY(t *testing.T) {\n\tm := newTestModel(\"merge\")\n\tm.PromptConfirmationBox.SetValue(\"y\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\trequire.NotNil(t, cmd, \"lowercase y should execute the action\")\n}\n\nfunc TestConfirmation_AcceptWithUppercaseY(t *testing.T) {\n\tm := newTestModel(\"reopen\")\n\tm.PromptConfirmationBox.SetValue(\"Y\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\trequire.NotNil(t, cmd, \"uppercase Y should execute the action\")\n}\n\nfunc TestConfirmation_RejectWithN(t *testing.T) {\n\tm := newTestModel(\"close\")\n\tm.PromptConfirmationBox.SetValue(\"n\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\t// cmd is a batch of (nil, blinkCmd) -- the nil means no action was taken.\n\t// We verify the prompt is dismissed regardless.\n\trequire.False(t, m.IsPromptConfirmationShown,\n\t\t\"confirmation prompt should be dismissed on rejection\")\n\t_ = cmd\n}\n\nfunc TestConfirmation_CancelWithEsc(t *testing.T) {\n\tm := newTestModel(\"merge\")\n\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEsc}\n\t_, cmd := m.Update(msg)\n\n\trequire.False(t, m.IsPromptConfirmationShown,\n\t\t\"Esc should dismiss the confirmation prompt\")\n\t_ = cmd\n}\n\nfunc TestConfirmation_CancelWithCtrlC(t *testing.T) {\n\tm := newTestModel(\"update\")\n\n\tmsg := tea.KeyPressMsg{Code: 'c', Mod: tea.ModCtrl}\n\t_, cmd := m.Update(msg)\n\n\trequire.False(t, m.IsPromptConfirmationShown,\n\t\t\"Ctrl+C should dismiss the confirmation prompt\")\n\t_ = cmd\n}\n\nfunc TestConfirmation_AllActions(t *testing.T) {\n\tactions := []string{\"close\", \"reopen\", \"ready\", \"merge\", \"update\", \"approveWorkflows\"}\n\n\tfor _, action := range actions {\n\t\tt.Run(action+\"_empty_input\", func(t *testing.T) {\n\t\t\tm := newTestModel(action)\n\n\t\t\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t\t\t_, cmd := m.Update(msg)\n\n\t\t\trequire.NotNil(t, cmd,\n\t\t\t\t\"empty input should confirm for action %q\", action)\n\t\t})\n\n\t\tt.Run(action+\"_explicit_y\", func(t *testing.T) {\n\t\t\tm := newTestModel(action)\n\t\t\tm.PromptConfirmationBox.SetValue(\"y\")\n\n\t\t\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t\t\t_, cmd := m.Update(msg)\n\n\t\t\trequire.NotNil(t, cmd,\n\t\t\t\t\"explicit y should confirm for action %q\", action)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prssection/watchChecks.go",
    "content": "package prssection\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os/exec\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/log/v2\"\n\t\"github.com/gen2brain/beeep\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc (m *Model) watchChecks() tea.Cmd {\n\tpr := m.GetCurrRow()\n\tif pr == nil {\n\t\treturn nil\n\t}\n\n\tprNumber := pr.GetNumber()\n\ttitle := pr.GetTitle()\n\trepoNameWithOwner := pr.GetRepoNameWithOwner()\n\tprData := pr.(*prrow.Data)\n\ttaskId := fmt.Sprintf(\"pr_reopen_%d\", prNumber)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Watching checks for PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"Watching checks for PR #%d\", prNumber),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tc := exec.Command(\n\t\t\t\"gh\",\n\t\t\t\"pr\",\n\t\t\t\"checks\",\n\t\t\t\"--watch\",\n\t\t\t\"--fail-fast\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\trepoNameWithOwner,\n\t\t)\n\n\t\tvar outb, errb bytes.Buffer\n\t\tc.Stdout = &outb\n\t\tc.Stderr = &errb\n\n\t\terr := c.Start()\n\t\tgo func() {\n\t\t\terr := c.Wait()\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(\"Error waiting for watch command to finish\", \"err\", err,\n\t\t\t\t\t\"stderr\", errb.String(), \"stdout\", outb.String())\n\t\t\t}\n\n\t\t\trenderedPr := prrow.PullRequest{Ctx: m.Ctx, Data: prData}\n\t\t\tchecksRollup := \" Checks are pending\"\n\t\t\tswitch renderedPr.GetStatusChecksRollup() {\n\t\t\tcase \"SUCCESS\":\n\t\t\t\tchecksRollup = \"✅ Checks have passed\"\n\t\t\tcase \"FAILURE\":\n\t\t\t\tchecksRollup = \"❌ Checks have failed\"\n\t\t\t}\n\n\t\t\terr = beeep.Notify(\n\t\t\t\tfmt.Sprintf(\"gh-dash: %s\", title),\n\t\t\t\tfmt.Sprintf(\"PR #%d in %s\\n%s\", prNumber, repoNameWithOwner, checksRollup),\n\t\t\t\t\"\",\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(\"Error showing system notification\", \"err\", err)\n\t\t\t}\n\t\t}()\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   m.Id,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         err,\n\t\t\tMsg: tasks.UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t},\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/tui/components/prview/action.go",
    "content": "package prview\n\nimport (\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n)\n\n// PRActionType identifies the type of action requested by a key press in the PR view.\ntype PRActionType int\n\nconst (\n\tPRActionNone PRActionType = iota\n\tPRActionApprove\n\tPRActionAssign\n\tPRActionUnassign\n\tPRActionComment\n\tPRActionDiff\n\tPRActionCheckout\n\tPRActionClose\n\tPRActionReady\n\tPRActionReopen\n\tPRActionMerge\n\tPRActionUpdate\n\tPRActionSummaryViewMore\n\tPRActionApproveWorkflows\n)\n\n// PRAction represents an action to be performed on a PR.\ntype PRAction struct {\n\tType PRActionType\n}\n\n// MsgToAction converts a tea.Msg to a PRAction if it matches a known key binding.\nfunc MsgToAction(msg tea.Msg) *PRAction {\n\tkeyMsg, ok := msg.(tea.KeyMsg)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tswitch {\n\tcase key.Matches(keyMsg, keys.PRKeys.Approve):\n\t\treturn &PRAction{Type: PRActionApprove}\n\tcase key.Matches(keyMsg, keys.PRKeys.Assign):\n\t\treturn &PRAction{Type: PRActionAssign}\n\tcase key.Matches(keyMsg, keys.PRKeys.Unassign):\n\t\treturn &PRAction{Type: PRActionUnassign}\n\tcase key.Matches(keyMsg, keys.PRKeys.Comment):\n\t\treturn &PRAction{Type: PRActionComment}\n\tcase key.Matches(keyMsg, keys.PRKeys.Diff):\n\t\treturn &PRAction{Type: PRActionDiff}\n\tcase key.Matches(keyMsg, keys.PRKeys.Checkout):\n\t\treturn &PRAction{Type: PRActionCheckout}\n\tcase key.Matches(keyMsg, keys.PRKeys.Close):\n\t\treturn &PRAction{Type: PRActionClose}\n\tcase key.Matches(keyMsg, keys.PRKeys.Ready):\n\t\treturn &PRAction{Type: PRActionReady}\n\tcase key.Matches(keyMsg, keys.PRKeys.Reopen):\n\t\treturn &PRAction{Type: PRActionReopen}\n\tcase key.Matches(keyMsg, keys.PRKeys.Merge):\n\t\treturn &PRAction{Type: PRActionMerge}\n\tcase key.Matches(keyMsg, keys.PRKeys.Update):\n\t\treturn &PRAction{Type: PRActionUpdate}\n\tcase key.Matches(keyMsg, keys.PRKeys.SummaryViewMore):\n\t\treturn &PRAction{Type: PRActionSummaryViewMore}\n\tcase key.Matches(keyMsg, keys.PRKeys.ApproveWorkflows):\n\t\treturn &PRAction{Type: PRActionApproveWorkflows}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/components/prview/action_test.go",
    "content": "package prview\n\nimport (\n\t\"testing\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\nfunc newTestModelForAction(t *testing.T) Model {\n\tt.Helper()\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.pr = &prrow.PullRequest{\n\t\tCtx: ctx,\n\t\tData: &prrow.Data{\n\t\t\tPrimary:    &data.PullRequestData{},\n\t\t\tIsEnriched: true,\n\t\t},\n\t}\n\treturn m\n}\n\nfunc TestMsgToActionReturnsCorrectActions(t *testing.T) {\n\ttestCases := []struct {\n\t\tname           string\n\t\tkeyBindingText rune\n\t\texpectedAction PRActionType\n\t}{\n\t\t{\"approve key\", 'v', PRActionApprove},\n\t\t{\"assign key\", 'a', PRActionAssign},\n\t\t{\"unassign key\", 'A', PRActionUnassign},\n\t\t{\"comment key\", 'c', PRActionComment},\n\t\t{\"diff key\", 'd', PRActionDiff},\n\t\t{\"checkout key C\", 'C', PRActionCheckout},\n\t\t{\"checkout key space\", tea.KeySpace, PRActionCheckout},\n\t\t{\"close key\", 'x', PRActionClose},\n\t\t{\"ready key\", 'W', PRActionReady},\n\t\t{\"reopen key\", 'X', PRActionReopen},\n\t\t{\"merge key\", 'm', PRActionMerge},\n\t\t{\"update key\", 'u', PRActionUpdate},\n\t\t{\"summary view more key\", 'e', PRActionSummaryViewMore},\n\t\t{\"approve workflows key\", 'V', PRActionApproveWorkflows},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tmsg := tea.KeyPressMsg{Code: tc.keyBindingText}\n\n\t\t\taction := MsgToAction(msg)\n\n\t\t\trequire.NotNil(t, action, \"expected action for key %q\", tc.keyBindingText)\n\t\t\trequire.Equal(\n\t\t\t\tt,\n\t\t\t\ttc.expectedAction,\n\t\t\t\taction.Type,\n\t\t\t\t\"expected action type %v for key %q, got %v\",\n\t\t\t\ttc.expectedAction,\n\t\t\t\ttc.keyBindingText,\n\t\t\t\taction.Type,\n\t\t\t)\n\t\t})\n\t}\n}\n\nfunc TestMsgToActionReturnsNilForUnknownKeys(t *testing.T) {\n\tmsg := tea.KeyPressMsg{Text: \"z\"}\n\n\taction := MsgToAction(msg)\n\n\trequire.Nil(t, action, \"expected nil action for unknown key\")\n}\n\nfunc TestIsTextInputBoxFocusedWhenCommenting(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isCommenting = true\n\n\trequire.True(\n\t\tt,\n\t\tm.IsTextInputBoxFocused(),\n\t\t\"expected text input box focused when in commenting mode\",\n\t)\n}\n\nfunc TestIsTextInputBoxFocusedWhenApproving(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isApproving = true\n\n\trequire.True(\n\t\tt,\n\t\tm.IsTextInputBoxFocused(),\n\t\t\"expected text input box focused when in approving mode\",\n\t)\n}\n\nfunc TestIsTextInputBoxFocusedWhenAssigning(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isAssigning = true\n\n\trequire.True(\n\t\tt,\n\t\tm.IsTextInputBoxFocused(),\n\t\t\"expected text input box focused when in assigning mode\",\n\t)\n}\n\nfunc TestIsTextInputBoxFocusedWhenUnassigning(t *testing.T) {\n\tm := newTestModelForAction(t)\n\tm.isUnassigning = true\n\n\trequire.True(\n\t\tt,\n\t\tm.IsTextInputBoxFocused(),\n\t\t\"expected text input box focused when in unassigning mode\",\n\t)\n}\n\nfunc TestUpdateHandlesSidebarTabNavigation(t *testing.T) {\n\tt.Run(\"prev sidebar tab\", func(t *testing.T) {\n\t\tm := newTestModelForAction(t)\n\t\t// Move to a non-first tab first\n\t\tm.carousel.MoveRight()\n\t\tinitialTab := m.carousel.SelectedItem()\n\n\t\tmsg := tea.KeyPressMsg{Text: \"[\"}\n\t\tm, _ = m.Update(msg)\n\n\t\trequire.NotEqual(t, initialTab, m.carousel.SelectedItem(),\n\t\t\t\"carousel should have moved to previous tab\")\n\t})\n\n\tt.Run(\"next sidebar tab\", func(t *testing.T) {\n\t\tm := newTestModelForAction(t)\n\t\tinitialTab := m.carousel.SelectedItem()\n\n\t\tmsg := tea.KeyPressMsg{Text: \"]\"}\n\t\tm, _ = m.Update(msg)\n\n\t\trequire.NotEqual(t, initialTab, m.carousel.SelectedItem(),\n\t\t\t\"carousel should have moved to next tab\")\n\t})\n}\n\nfunc TestPRActionTypes(t *testing.T) {\n\t// Verify all action types are distinct\n\tactionTypes := []PRActionType{\n\t\tPRActionNone,\n\t\tPRActionApprove,\n\t\tPRActionAssign,\n\t\tPRActionUnassign,\n\t\tPRActionComment,\n\t\tPRActionDiff,\n\t\tPRActionCheckout,\n\t\tPRActionClose,\n\t\tPRActionReady,\n\t\tPRActionReopen,\n\t\tPRActionMerge,\n\t\tPRActionUpdate,\n\t\tPRActionSummaryViewMore,\n\t\tPRActionApproveWorkflows,\n\t}\n\n\tseen := make(map[PRActionType]bool)\n\tfor _, at := range actionTypes {\n\t\trequire.False(t, seen[at], \"duplicate action type value: %v\", at)\n\t\tseen[at] = true\n\t}\n\n\t// Verify PRActionNone is zero value\n\trequire.Equal(t, PRActionType(0), PRActionNone, \"PRActionNone should be zero value\")\n}\n\nfunc TestMsgToActionWithReboundKeys(t *testing.T) {\n\t// Save original key bindings\n\toriginalApproveKeys := keys.PRKeys.Approve.Keys()\n\n\t// Rebind approve key to \"V\" (uppercase)\n\tkeys.PRKeys.Approve.SetKeys(\"V\")\n\tdefer func() {\n\t\t// Restore original bindings\n\t\tkeys.PRKeys.Approve.SetKeys(originalApproveKeys...)\n\t}()\n\n\tmsg := tea.KeyPressMsg{Text: \"V\"}\n\n\taction := MsgToAction(msg)\n\n\trequire.NotNil(t, action, \"expected action for rebound key\")\n\trequire.Equal(t, PRActionApprove, action.Type, \"expected approve action for rebound key\")\n}\n"
  },
  {
    "path": "internal/tui/components/prview/activity.go",
    "content": "package prview\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"time\"\n\n\t\"charm.land/glamour/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype RenderedActivity struct {\n\tUpdatedAt      time.Time\n\tRenderedString string\n}\n\nfunc (m *Model) renderActivity() string {\n\twidth := m.getIndentedContentWidth()\n\tmarkdownRenderer := markdown.GetMarkdownRenderer(width)\n\tbodyStyle := lipgloss.NewStyle()\n\n\tvar activities []RenderedActivity\n\tvar comments []comment\n\n\tif !m.pr.Data.IsEnriched {\n\t\treturn bodyStyle.Render(\"Loading...\")\n\t}\n\n\tfor _, review := range m.pr.Data.Enriched.ReviewThreads.Nodes {\n\t\tpath := review.Path\n\t\tline := review.Line\n\t\tfor _, c := range review.Comments.Nodes {\n\t\t\tcomments = append(comments, comment{\n\t\t\t\tAuthor:    c.Author.Login,\n\t\t\t\tBody:      c.Body,\n\t\t\t\tUpdatedAt: c.UpdatedAt,\n\t\t\t\tPath:      &path,\n\t\t\t\tLine:      &line,\n\t\t\t})\n\t\t}\n\t}\n\n\tfor _, c := range m.pr.Data.Enriched.Comments.Nodes {\n\t\tcomments = append(comments, comment{\n\t\t\tAuthor:    c.Author.Login,\n\t\t\tBody:      c.Body,\n\t\t\tUpdatedAt: c.UpdatedAt,\n\t\t})\n\t}\n\n\tfor _, comment := range comments {\n\t\trenderedComment, err := m.renderComment(comment, markdownRenderer)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tactivities = append(activities, RenderedActivity{\n\t\t\tUpdatedAt:      comment.UpdatedAt,\n\t\t\tRenderedString: renderedComment,\n\t\t})\n\t}\n\n\tfor _, review := range m.pr.Data.Primary.Reviews.Nodes {\n\t\trenderedReview, err := m.renderReview(review, markdownRenderer)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tactivities = append(activities, RenderedActivity{\n\t\t\tUpdatedAt:      review.UpdatedAt,\n\t\t\tRenderedString: renderedReview,\n\t\t})\n\t}\n\n\tsort.Slice(activities, func(i, j int) bool {\n\t\treturn activities[i].UpdatedAt.Before(activities[j].UpdatedAt)\n\t})\n\n\tbody := \"\"\n\tif len(activities) == 0 {\n\t\tbody = renderEmptyState()\n\t} else {\n\t\tvar renderedActivities []string\n\t\tfor _, activity := range activities {\n\t\t\trenderedActivities = append(renderedActivities, activity.RenderedString)\n\t\t}\n\t\ttitle := m.ctx.Styles.Common.MainTextStyle.MarginBottom(1).Underline(true).Render(\n\t\t\tfmt.Sprintf(\"%s  %d comments\", constants.CommentsIcon, len(activities)))\n\t\tbody = lipgloss.JoinVertical(lipgloss.Left, renderedActivities...)\n\t\tbody = lipgloss.JoinVertical(lipgloss.Left, title, body)\n\t}\n\n\treturn bodyStyle.Render(body)\n}\n\nfunc renderEmptyState() string {\n\treturn lipgloss.NewStyle().Italic(true).Render(\"No comments...\")\n}\n\ntype comment struct {\n\tAuthor    string\n\tUpdatedAt time.Time\n\tBody      string\n\tPath      *string\n\tLine      *int\n}\n\nfunc (m *Model) renderComment(\n\tcomment comment,\n\tmarkdownRenderer glamour.TermRenderer,\n) (string, error) {\n\twidth := m.getIndentedContentWidth()\n\tauthorAndTime := lipgloss.NewStyle().\n\t\tWidth(width).\n\t\tBorderStyle(lipgloss.RoundedBorder()).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).Render(\n\t\tlipgloss.JoinHorizontal(\n\t\t\tlipgloss.Top,\n\t\t\tm.ctx.Styles.Common.MainTextStyle.Render(comment.Author),\n\t\t\t\" \",\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tForeground(m.ctx.Theme.FaintText).\n\t\t\t\tRender(utils.TimeElapsed(comment.UpdatedAt)),\n\t\t))\n\n\tvar header string\n\tif comment.Path != nil && comment.Line != nil {\n\t\tfilePath := lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Width(width).Render(\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"%s#l%d\",\n\t\t\t\t*comment.Path,\n\t\t\t\t*comment.Line,\n\t\t\t),\n\t\t)\n\t\theader = lipgloss.JoinVertical(lipgloss.Left, authorAndTime, filePath, \"\")\n\t} else {\n\t\theader = authorAndTime\n\t}\n\n\tbody := lineCleanupRegex.ReplaceAllString(comment.Body, \"\")\n\tbody, err := markdownRenderer.Render(body)\n\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\theader,\n\t\tbody,\n\t), err\n}\n\nfunc (m *Model) renderReview(\n\treview data.Review,\n\tmarkdownRenderer glamour.TermRenderer,\n) (string, error) {\n\theader := m.renderReviewHeader(review)\n\tbody, err := markdownRenderer.Render(review.Body)\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\theader,\n\t\tbody,\n\t), err\n}\n\nfunc (m *Model) renderReviewHeader(review data.Review) string {\n\treturn lipgloss.JoinHorizontal(lipgloss.Top,\n\t\tm.renderReviewDecision(review.State),\n\t\t\" \",\n\t\tm.ctx.Styles.Common.MainTextStyle.Render(review.Author.Login),\n\t\t\" \",\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\n\t\t\t\"reviewed \"+utils.TimeElapsed(review.UpdatedAt)),\n\t)\n}\n\nfunc (m *Model) renderReviewDecision(decision string) string {\n\tswitch decision {\n\tcase \"PENDING\":\n\t\treturn m.ctx.Styles.Common.WaitingGlyph\n\tcase \"COMMENTED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\"󰈈\")\n\tcase \"APPROVED\":\n\t\treturn m.ctx.Styles.Common.SuccessGlyph\n\tcase \"CHANGES_REQUESTED\":\n\t\treturn m.ctx.Styles.Common.FailureGlyph\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "internal/tui/components/prview/checks.go",
    "content": "package prview\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\tghchecks \"github.com/dlvhdr/x/gh-checks\"\n)\n\ntype checkSectionStatus int\n\nconst (\n\tstatusSuccess checkSectionStatus = iota\n\tstatusFailure\n\tstatusWaiting\n\tstatusNonRequested\n)\n\nfunc (m *Model) renderChecksOverview() string {\n\tw := m.getIndentedContentWidth()\n\n\tif m.pr.Data.Primary.State == \"MERGED\" {\n\t\treturn m.viewMergedStatus()\n\t}\n\n\tif m.pr.Data.Primary.State == \"CLOSED\" {\n\t\treturn m.viewClosedStatus()\n\t}\n\n\treview, rStatus := m.viewReviewStatus()\n\tchecks, cStatus := m.viewChecksStatus()\n\tmerge, mStatus := m.viewMergeStatus()\n\n\tborderColor := m.ctx.Theme.FaintBorder\n\tif rStatus == statusFailure || cStatus == statusFailure || mStatus == statusFailure {\n\t\tborderColor = m.ctx.Theme.ErrorText\n\t} else if rStatus == statusSuccess && cStatus == statusSuccess && mStatus == statusSuccess {\n\t\tborderColor = m.ctx.Theme.SuccessText\n\t}\n\n\tbox := lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder()).\n\t\tBorderForeground(borderColor).\n\t\tWidth(w)\n\tparts := make([]string, 0)\n\tif review != \"\" {\n\t\tparts = append(parts, review)\n\t}\n\tif checks != \"\" {\n\t\tparts = append(parts, checks)\n\t}\n\tif merge != \"\" {\n\t\tparts = append(parts, merge)\n\t}\n\n\treturn box.Render(lipgloss.JoinVertical(lipgloss.Left, parts...))\n}\n\nfunc (m *Model) viewChecksStatus() (string, checkSectionStatus) {\n\tchecks := \"\"\n\n\tif !m.pr.Data.IsEnriched {\n\t\treturn m.viewCheckCategory(\n\t\t\tm.ctx.Styles.Common.WaitingGlyph,\n\t\t\t\"Loading...\",\n\t\t\t\"\",\n\t\t\tfalse,\n\t\t), statusWaiting\n\t}\n\n\tstats := m.getChecksStats()\n\tvar icon, title string\n\tvar status checkSectionStatus\n\n\tstatStrs := make([]string, 0)\n\tif stats.failed > 0 {\n\t\ticon = m.ctx.Styles.Common.FailureGlyph\n\t\ttitle = \"Some checks were not successful\"\n\t\tstatus = statusFailure\n\t} else if stats.awaitingApproval > 0 {\n\t\ticon = m.ctx.Styles.Common.ActionRequiredGlyph\n\t\ttitle = \"Workflows awaiting approval\"\n\t\tstatus = statusWaiting\n\t} else if stats.inProgress > 0 {\n\t\ticon = m.ctx.Styles.Common.WaitingGlyph\n\t\ttitle = \"Some checks haven’t completed yet\"\n\t\tstatus = statusWaiting\n\t} else if stats.succeeded > 0 {\n\t\ticon = m.ctx.Styles.Common.SuccessGlyph\n\t\ttitle = \"All checks have passed\"\n\t\tstatus = statusSuccess\n\t} else {\n\t\treturn \"\", statusWaiting\n\t}\n\n\tif stats.failed > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d failing\", stats.failed))\n\t}\n\tif stats.awaitingApproval > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d awaiting approval\", stats.awaitingApproval))\n\t}\n\tif stats.inProgress > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d in progress\", stats.inProgress))\n\t}\n\tif stats.skipped > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d skipped\", stats.skipped))\n\t}\n\tif stats.neutral > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d neutral\", stats.neutral))\n\t}\n\tif stats.succeeded > 0 {\n\t\tstatStrs = append(statStrs, fmt.Sprintf(\"%d successful\", stats.succeeded))\n\t}\n\tif title != \"\" {\n\t\tchecksBar := m.viewChecksBar()\n\t\tchecksBottom := lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tstrings.Join(statStrs, \", \"),\n\t\t\tchecksBar,\n\t\t)\n\t\tchecks = m.viewCheckCategory(icon, title, checksBottom, false)\n\t}\n\treturn checks, status\n}\n\nfunc (m *Model) viewMergeStatus() (string, checkSectionStatus) {\n\tvar icon, title, subtitle string\n\tvar status checkSectionStatus\n\tnumReviewOwners := m.numRequestedReviewOwners()\n\tif m.pr.Data.Primary.MergeStateStatus == \"CLEAN\" ||\n\t\tm.pr.Data.Primary.MergeStateStatus == \"UNSTABLE\" {\n\t\ticon = m.ctx.Styles.Common.SuccessGlyph\n\t\ttitle = \"No conflicts with base branch\"\n\t\tsubtitle = \"Changes can be cleanly merged\"\n\t\tstatus = statusSuccess\n\t} else if m.pr.Data.Primary.IsDraft {\n\t\ticon = m.ctx.Styles.Common.DraftGlyph\n\t\ttitle = \"This pull request is still a work in progress\"\n\t\tsubtitle = \"Draft pull requests cannot be merged\"\n\t\tstatus = statusWaiting\n\t} else if m.pr.Data.Primary.MergeStateStatus == \"BLOCKED\" {\n\t\ticon = m.ctx.Styles.Common.FailureGlyph\n\t\ttitle = \"Merging is blocked\"\n\t\tif numReviewOwners > 0 {\n\t\t\tsubtitle = \"Waiting on code owner review\"\n\t\t}\n\t\tstatus = statusFailure\n\t} else if m.pr.Data.Primary.Mergeable == \"CONFLICTING\" {\n\t\ticon = m.ctx.Styles.Common.FailureGlyph\n\t\ttitle = \"This branch has conflicts that must be resolved\"\n\t\tstatus = statusFailure\n\t\tif m.pr.Data.Primary.MergeStateStatus == \"CLEAN\" {\n\t\t\tsubtitle = \"Changes can be cleanly merged\"\n\t\t}\n\t}\n\treturn m.viewCheckCategory(icon, title, subtitle, true), status\n}\n\nfunc (m *Model) viewMergedStatus() string {\n\tw := m.getIndentedContentWidth()\n\tbox := lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder()).\n\t\tBorderForeground(m.ctx.Styles.Colors.MergedPR).\n\t\tWidth(w)\n\treturn box.Render(m.viewCheckCategory(\n\t\tm.ctx.Styles.Common.MergedGlyph,\n\t\t\"Pull request successfully merged and closed\",\n\t\t\"The branch has been merged\",\n\t\ttrue,\n\t))\n}\n\nfunc (m *Model) viewClosedStatus() string {\n\tw := m.getIndentedContentWidth()\n\tbox := lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder()).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).\n\t\tWidth(w)\n\treturn box.Render(m.viewCheckCategory(\n\t\t\"\",\n\t\t\"Closed with unmerged commits\",\n\t\t\"This pull request is closed\",\n\t\ttrue,\n\t))\n}\n\nfunc (m *Model) viewReviewStatus() (string, checkSectionStatus) {\n\tpr := m.pr\n\tif pr.Data == nil {\n\t\treturn \"\", statusWaiting\n\t}\n\n\tvar icon, title, subtitle string\n\tvar status checkSectionStatus\n\tnumReviewOwners := m.numRequestedReviewOwners()\n\n\tnumApproving, numChangesRequested, numPending, numCommented := 0, 0, 0, 0\n\n\tfor _, node := range pr.Data.Primary.Reviews.Nodes {\n\t\tswitch node.State {\n\t\tcase \"APPROVED\":\n\t\t\tnumApproving++\n\t\tcase \"CHANGES_REQUESTED\":\n\t\t\tnumChangesRequested++\n\t\tcase \"PENDING\":\n\t\t\tnumPending++\n\t\tcase \"COMMENTED\":\n\t\t\tnumCommented++\n\t\t}\n\t}\n\n\tswitch pr.Data.Primary.ReviewDecision {\n\tcase \"APPROVED\":\n\t\ticon = m.ctx.Styles.Common.SuccessGlyph\n\t\ttitle = \"Changes approved\"\n\t\tsubtitle = fmt.Sprintf(\"%d approving reviews\", numApproving)\n\t\tstatus = statusSuccess\n\tcase \"CHANGES_REQUESTED\":\n\t\ticon = m.ctx.Styles.Common.FailureGlyph\n\t\ttitle = \"Changes requested\"\n\t\tsubtitle = fmt.Sprintf(\"%d requested changes\", numChangesRequested)\n\t\tstatus = statusFailure\n\tcase \"REVIEW_REQUIRED\":\n\t\ticon = pr.Ctx.Styles.Common.WaitingGlyph\n\t\ttitle = \"Review Required\"\n\n\t\tbranchRules := m.pr.Data.Primary.Repository.BranchProtectionRules.Nodes\n\t\tif len(branchRules) > 0 && branchRules[0].RequiresCodeOwnerReviews && numApproving < 1 {\n\t\t\tsubtitle = \"Code owner review required\"\n\t\t\tstatus = statusFailure\n\t\t} else if numApproving < numReviewOwners {\n\t\t\tsubtitle = \"Code owner review required\"\n\t\t\tstatus = statusFailure\n\t\t} else if len(branchRules) > 0 && numApproving <\n\t\t\tbranchRules[0].RequiredApprovingReviewCount {\n\t\t\tsubtitle = fmt.Sprintf(\"Need %d more approval\",\n\t\t\t\tbranchRules[0].RequiredApprovingReviewCount-numApproving)\n\t\t\tstatus = statusWaiting\n\t\t} else if numCommented > 0 {\n\t\t\tsubtitle = fmt.Sprintf(\"%d reviewers left comments\", numCommented)\n\t\t\tstatus = statusWaiting\n\t\t}\n\tdefault:\n\t\ticon = pr.Ctx.Styles.Common.PersonGlyph\n\t\ttitle = \"Reviews\"\n\t\tsubtitle = \"Non requested\"\n\t\tstatus = statusNonRequested\n\t}\n\n\treturn m.viewCheckCategory(icon, title, subtitle, false), status\n}\n\nfunc (m *Model) viewCheckCategory(icon, title, subtitle string, isLast bool) string {\n\tw := m.getIndentedContentWidth()\n\tpart := lipgloss.NewStyle().\n\t\tBorder(lipgloss.NormalBorder(), false, false, !isLast, false).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).\n\t\tWidth(w).\n\t\tPadding(1)\n\n\tsTitle := lipgloss.NewStyle().Bold(true)\n\tsSub := lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText)\n\n\tcategory := lipgloss.JoinHorizontal(lipgloss.Top, icon, \" \", sTitle.Render(title))\n\n\tif subtitle != \"\" {\n\t\tcategory = lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tcategory,\n\t\t\tsSub.MarginLeft(2).Render(subtitle),\n\t\t)\n\t}\n\tif category == \"\" {\n\t\treturn \"\"\n\t}\n\treturn part.Render(category)\n}\n\nfunc (m *Model) viewChecksBar() string {\n\tw := m.getIndentedContentWidth() - 4\n\tstats := m.getChecksStats()\n\ttotal := float64(\n\t\tstats.failed + stats.skipped + stats.neutral + stats.succeeded + stats.inProgress + stats.awaitingApproval,\n\t)\n\tnumSections := 0\n\tif stats.failed > 0 {\n\t\tnumSections++\n\t}\n\tif stats.awaitingApproval > 0 {\n\t\tnumSections++\n\t}\n\tif stats.inProgress > 0 {\n\t\tnumSections++\n\t}\n\tif stats.skipped > 0 || stats.neutral > 0 {\n\t\tnumSections++\n\t}\n\tif stats.succeeded > 0 {\n\t\tnumSections++\n\t}\n\t// subtract number of spacers\n\tw -= numSections - 1\n\tif w < 0 {\n\t\tw = 0\n\t}\n\n\tsections := make([]string, 0)\n\tif stats.failed > 0 {\n\t\tfailWidth := int(math.Floor((float64(stats.failed) / total) * float64(w)))\n\t\tsections = append(sections, lipgloss.NewStyle().Width(failWidth).Foreground(\n\t\t\tm.ctx.Theme.ErrorText).Height(1).Render(strings.Repeat(\"▃\", failWidth)))\n\t}\n\tif stats.awaitingApproval > 0 {\n\t\tawWidth := int(math.Floor((float64(stats.awaitingApproval) / total) * float64(w)))\n\t\tsections = append(sections, lipgloss.NewStyle().Width(awWidth).Foreground(\n\t\t\tm.ctx.Theme.WarningText).Height(1).Render(strings.Repeat(\"▃\", awWidth)))\n\t}\n\tif stats.inProgress > 0 {\n\t\tipWidth := int(math.Floor((float64(stats.inProgress) / total) * float64(w)))\n\t\tsections = append(sections, lipgloss.NewStyle().Width(ipWidth).Foreground(\n\t\t\tm.ctx.Theme.WarningText).Height(1).Render(strings.Repeat(\"▃\", ipWidth)))\n\t}\n\tif stats.skipped > 0 || stats.neutral > 0 {\n\t\tskipWidth := int(math.Floor((float64(stats.skipped+stats.neutral) / total) * float64(w)))\n\t\tsections = append(sections, lipgloss.NewStyle().Width(skipWidth).Foreground(\n\t\t\tm.ctx.Theme.FaintText).Height(1).Render(strings.Repeat(\"▃\", skipWidth)))\n\t}\n\tif stats.succeeded > 0 {\n\t\tsuccWidth := int(math.Floor((float64(stats.succeeded) / total) * float64(w)))\n\t\tsections = append(sections, lipgloss.NewStyle().Width(succWidth).Foreground(\n\t\t\tm.ctx.Theme.SuccessText).Height(1).Render(strings.Repeat(\"▃\", succWidth)))\n\t}\n\n\treturn strings.Join(sections, \" \")\n}\n\nfunc renderCheckRunName(checkRun data.CheckRun) string {\n\tvar parts []string\n\tcreator := strings.TrimSpace(string(checkRun.CheckSuite.Creator.Login))\n\tif creator != \"\" {\n\t\tparts = append(parts, creator)\n\t}\n\n\tworkflow := strings.TrimSpace(string(checkRun.CheckSuite.WorkflowRun.Workflow.Name))\n\tif workflow != \"\" {\n\t\tparts = append(parts, workflow)\n\t}\n\n\tname := strings.TrimSpace(string(checkRun.Name))\n\tif name != \"\" {\n\t\tparts = append(parts, name)\n\t}\n\n\treturn lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tstrings.Join(parts, \"/\"),\n\t)\n}\n\ntype CheckCategory int\n\nconst (\n\tCheckWaiting CheckCategory = iota\n\tCheckFailure\n\tCheckSuccess\n)\n\nfunc (m *Model) renderCheckRunConclusion(checkRun data.CheckRun) (CheckCategory, string) {\n\tif ghchecks.IsStatusWaiting(string(checkRun.Status)) {\n\t\treturn CheckWaiting, m.ctx.Styles.Common.WaitingGlyph\n\t}\n\n\tif ghchecks.IsConclusionAFailure(string(checkRun.Conclusion)) {\n\t\treturn CheckFailure, m.ctx.Styles.Common.FailureGlyph\n\t}\n\n\treturn CheckSuccess, m.ctx.Styles.Common.SuccessGlyph\n}\n\nfunc (m *Model) renderStatusContextConclusion(\n\tstatusContext data.StatusContext,\n) (CheckCategory, string) {\n\tconclusionStr := string(statusContext.State)\n\tif ghchecks.IsStatusWaiting(conclusionStr) {\n\t\treturn CheckWaiting, m.ctx.Styles.Common.WaitingGlyph\n\t}\n\n\tif ghchecks.IsConclusionAFailure(conclusionStr) {\n\t\treturn CheckFailure, m.ctx.Styles.Common.FailureGlyph\n\t}\n\n\treturn CheckSuccess, m.ctx.Styles.Common.SuccessGlyph\n}\n\nfunc renderStatusContextName(statusContext data.StatusContext) string {\n\tvar parts []string\n\tcreator := strings.TrimSpace(string(statusContext.Creator.Login))\n\tif creator != \"\" {\n\t\tparts = append(parts, creator)\n\t}\n\n\tcontext := strings.TrimSpace(string(statusContext.Context))\n\tif context != \"\" && context != \"/\" {\n\t\tparts = append(parts, context)\n\t}\n\treturn lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tstrings.Join(parts, \"/\"),\n\t)\n}\n\nfunc (sidebar *Model) renderChecks() string {\n\ttitle := sidebar.ctx.Styles.Common.MainTextStyle.MarginBottom(1).\n\t\tUnderline(true).\n\t\tRender(\" All Checks\")\n\n\tcommits := sidebar.pr.Data.Enriched.Commits.Nodes\n\tif len(commits) == 0 {\n\t\treturn lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\ttitle,\n\t\t\t\"Loading...\",\n\t\t)\n\t}\n\n\tfailures := make([]string, 0)\n\twaiting := make([]string, 0)\n\trest := make([]string, 0)\n\tawaitingApproval := make([]string, 0)\n\tpending := make([]string, 0)\n\n\tlastCommit := commits[0]\n\n\t// Collect check suites that don't appear in statusCheckRollup\n\tfor _, suite := range lastCommit.Commit.CheckSuites.Nodes {\n\t\tworkflowName := strings.TrimSpace(string(suite.WorkflowRun.Workflow.Name))\n\t\tif workflowName == \"\" {\n\t\t\tworkflowName = strings.TrimSpace(string(suite.App.Name))\n\t\t}\n\t\tif workflowName == \"\" {\n\t\t\tworkflowName = \"Workflow\"\n\t\t}\n\n\t\tif suite.Conclusion == \"ACTION_REQUIRED\" {\n\t\t\t// Workflow requires approval before it can run\n\t\t\tcheck := lipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Top,\n\t\t\t\tsidebar.ctx.Styles.Common.ActionRequiredGlyph,\n\t\t\t\t\" \",\n\t\t\t\tworkflowName,\n\t\t\t)\n\t\t\tawaitingApproval = append(awaitingApproval, check)\n\t\t} else if suite.Status == \"QUEUED\" || suite.Status == \"PENDING\" || suite.Status == \"WAITING\" {\n\t\t\t// Workflow is queued/pending (will run automatically)\n\t\t\tcheck := lipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Top,\n\t\t\t\tsidebar.ctx.Styles.Common.WaitingGlyph,\n\t\t\t\t\" \",\n\t\t\t\tworkflowName,\n\t\t\t)\n\t\t\tpending = append(pending, check)\n\t\t}\n\t}\n\n\t// Build a set of reported check names to compare against required checks\n\treportedChecks := make(map[string]bool)\n\n\tfor _, node := range lastCommit.Commit.StatusCheckRollup.Contexts.Nodes {\n\t\tvar category CheckCategory\n\t\tvar check string\n\t\tvar checkName string\n\t\tswitch node.Typename {\n\t\tcase \"CheckRun\":\n\t\t\tcheckRun := node.CheckRun\n\t\t\tvar renderedStatus string\n\t\t\tcategory, renderedStatus = sidebar.renderCheckRunConclusion(checkRun)\n\t\t\tcheckName = string(checkRun.Name)\n\t\t\tname := renderCheckRunName(checkRun)\n\t\t\tcheck = lipgloss.JoinHorizontal(lipgloss.Top, renderedStatus, \" \", name)\n\t\tcase \"StatusContext\":\n\t\t\tstatusContext := node.StatusContext\n\t\t\tvar status string\n\t\t\tcategory, status = sidebar.renderStatusContextConclusion(statusContext)\n\t\t\tcheckName = string(statusContext.Context)\n\t\t\tcheck = lipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Top,\n\t\t\t\tstatus,\n\t\t\t\t\" \",\n\t\t\t\trenderStatusContextName(statusContext),\n\t\t\t)\n\t\t}\n\n\t\treportedChecks[checkName] = true\n\n\t\tswitch category {\n\t\tcase CheckWaiting:\n\t\t\twaiting = append(waiting, check)\n\t\tcase CheckFailure:\n\t\t\tfailures = append(failures, check)\n\t\tdefault:\n\t\t\trest = append(rest, check)\n\t\t}\n\t}\n\n\t// Check for required status checks that haven't been reported yet\n\tbranchRules := sidebar.pr.Data.Primary.Repository.BranchProtectionRules.Nodes\n\tif len(branchRules) > 0 {\n\t\tfor _, requiredContext := range branchRules[0].RequiredStatusCheckContexts {\n\t\t\tcontextName := string(requiredContext)\n\t\t\tif !reportedChecks[contextName] {\n\t\t\t\t// Required check hasn't been reported yet\n\t\t\t\tcheck := lipgloss.JoinHorizontal(\n\t\t\t\t\tlipgloss.Top,\n\t\t\t\t\tsidebar.ctx.Styles.Common.WaitingGlyph,\n\t\t\t\t\t\" \",\n\t\t\t\t\tcontextName,\n\t\t\t\t)\n\t\t\t\tpending = append(pending, check)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(awaitingApproval)+len(pending)+len(waiting)+len(failures)+len(rest) == 0 {\n\t\treturn lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\ttitle,\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tItalic(true).\n\t\t\t\tPaddingLeft(2).\n\t\t\t\tWidth(sidebar.getIndentedContentWidth()).\n\t\t\t\tRender(\"No checks to display...\"),\n\t\t)\n\t}\n\n\tparts := make([]string, 0)\n\n\t// Show awaiting approval workflows first\n\tif len(awaitingApproval) > 0 {\n\t\tsectionHeader := lipgloss.NewStyle().\n\t\t\tBold(true).\n\t\t\tForeground(sidebar.ctx.Theme.WarningText).\n\t\t\tRender(fmt.Sprintf(\"Awaiting Approval (%d)\", len(awaitingApproval)))\n\t\tparts = append(parts, sectionHeader)\n\t\tparts = append(parts, awaitingApproval...)\n\t\tparts = append(parts, \"\") // spacing\n\t}\n\n\t// Show pending workflows\n\tif len(pending) > 0 {\n\t\tsectionHeader := lipgloss.NewStyle().\n\t\t\tBold(true).\n\t\t\tForeground(sidebar.ctx.Theme.WarningText).\n\t\t\tRender(fmt.Sprintf(\"Pending (%d)\", len(pending)))\n\t\tparts = append(parts, sectionHeader)\n\t\tparts = append(parts, pending...)\n\t\tparts = append(parts, \"\") // spacing\n\t}\n\n\tparts = append(parts, failures...)\n\tparts = append(parts, waiting...)\n\tparts = append(parts, rest...)\n\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\ttitle,\n\t\tlipgloss.NewStyle().PaddingLeft(2).Width(sidebar.getIndentedContentWidth()).Render(\n\t\t\tlipgloss.JoinVertical(lipgloss.Left, parts...)),\n\t)\n}\n\ntype checksStats struct {\n\tsucceeded        int\n\tneutral          int\n\tfailed           int\n\tskipped          int\n\tinProgress       int\n\tawaitingApproval int\n}\n\nfunc (m *Model) getStatusCheckRollupStats(rollup data.StatusCheckRollupStats) checksStats {\n\tvar res checksStats\n\tallChecks := make([]data.ContextCountByState, 0)\n\tallChecks = append(allChecks, rollup.Contexts.CheckRunCountsByState...)\n\tallChecks = append(allChecks, rollup.Contexts.StatusContextCountsByState...)\n\n\tfor _, count := range allChecks {\n\t\tstate := string(count.State)\n\t\tif ghchecks.IsStatusWaiting(state) {\n\t\t\tres.inProgress += int(count.Count)\n\t\t} else if ghchecks.IsConclusionAFailure(state) {\n\t\t\tres.failed += int(count.Count)\n\t\t} else if ghchecks.IsConclusionASkip(state) {\n\t\t\tres.skipped += int(count.Count)\n\t\t} else if ghchecks.IsConclusionNeutral(state) {\n\t\t\tres.neutral += int(count.Count)\n\t\t} else if ghchecks.IsConclusionASuccess(state) {\n\t\t\tres.succeeded += int(count.Count)\n\t\t}\n\t}\n\n\treturn res\n}\n\nfunc (m *Model) getChecksStats() checksStats {\n\tvar res checksStats\n\tcommits := m.pr.Data.Enriched.Commits.Nodes\n\tif len(commits) == 0 {\n\t\treturn res\n\t}\n\n\tlastCommit := commits[0]\n\tallChecks := make([]data.ContextCountByState, 0)\n\tallChecks = append(\n\t\tallChecks,\n\t\tlastCommit.Commit.StatusCheckRollup.Contexts.CheckRunCountsByState...)\n\tallChecks = append(\n\t\tallChecks,\n\t\tlastCommit.Commit.StatusCheckRollup.Contexts.StatusContextCountsByState...)\n\n\tfor _, count := range allChecks {\n\t\tstate := string(count.State)\n\t\tif ghchecks.IsStatusWaiting(state) {\n\t\t\tres.inProgress += int(count.Count)\n\t\t} else if ghchecks.IsConclusionAFailure(state) {\n\t\t\tres.failed += int(count.Count)\n\t\t} else if ghchecks.IsConclusionASkip(state) {\n\t\t\tres.skipped += int(count.Count)\n\t\t} else if ghchecks.IsConclusionNeutral(state) {\n\t\t\tres.neutral += int(count.Count)\n\t\t} else if ghchecks.IsConclusionASuccess(state) {\n\t\t\tres.succeeded += int(count.Count)\n\t\t}\n\t}\n\n\t// Count check suites that don't appear in statusCheckRollup\n\tfor _, suite := range lastCommit.Commit.CheckSuites.Nodes {\n\t\tif suite.Conclusion == \"ACTION_REQUIRED\" {\n\t\t\tres.awaitingApproval++\n\t\t} else if suite.Status == \"QUEUED\" || suite.Status == \"PENDING\" || suite.Status == \"WAITING\" {\n\t\t\tres.inProgress++\n\t\t}\n\t}\n\n\treturn res\n}\n\nfunc (m *Model) numRequestedReviewOwners() int {\n\tnumOwners := 0\n\n\tfor _, node := range m.pr.Data.Primary.ReviewRequests.Nodes {\n\t\tif node.AsCodeOwner {\n\t\t\tnumOwners++\n\t\t}\n\t}\n\n\treturn numOwners\n}\n"
  },
  {
    "path": "internal/tui/components/prview/checks_test.go",
    "content": "package prview\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\tgraphql \"github.com/cli/shurcooL-graphql\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n\tchecks \"github.com/dlvhdr/x/gh-checks\"\n)\n\ntype checksTestOptions struct {\n\tcheckSuites          data.CheckSuites\n\tcheckRuns            []data.CheckRun\n\trollupState          string\n\trequiredStatusChecks []string\n}\n\nfunc newTestModelForChecks(t *testing.T, opts checksTestOptions) Model {\n\tt.Helper()\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\t// Build branch protection rules\n\tbranchRules := data.BranchProtectionRules{}\n\tif len(opts.requiredStatusChecks) > 0 {\n\t\truleNode := struct {\n\t\t\tRequiredApprovingReviewCount int\n\t\t\tRequiresApprovingReviews     graphql.Boolean\n\t\t\tRequiresCodeOwnerReviews     graphql.Boolean\n\t\t\tRequiresStatusChecks         graphql.Boolean\n\t\t\tRequiredStatusCheckContexts  []graphql.String\n\t\t}{\n\t\t\tRequiresStatusChecks: true,\n\t\t}\n\t\tfor _, ctx := range opts.requiredStatusChecks {\n\t\t\truleNode.RequiredStatusCheckContexts = append(\n\t\t\t\truleNode.RequiredStatusCheckContexts,\n\t\t\t\tgraphql.String(ctx),\n\t\t\t)\n\t\t}\n\t\tbranchRules.Nodes = append(branchRules.Nodes, ruleNode)\n\t}\n\n\t// Build the enriched data with commits\n\tenriched := data.EnrichedPullRequestData{}\n\n\t// We need to directly construct the Commits field\n\t// Since it uses anonymous struct types, we build it inline\n\tenriched.Commits.TotalCount = 1\n\tenriched.Commits.Nodes = make([]struct {\n\t\tCommit struct {\n\t\t\tDeployments struct {\n\t\t\t\tNodes []struct {\n\t\t\t\t\tTask        graphql.String\n\t\t\t\t\tDescription graphql.String\n\t\t\t\t}\n\t\t\t} `graphql:\"deployments(last: 10)\"`\n\t\t\tCommitUrl         graphql.String\n\t\t\tStatusCheckRollup struct {\n\t\t\t\tState    graphql.String\n\t\t\t\tContexts struct {\n\t\t\t\t\tTotalCount                 graphql.Int\n\t\t\t\t\tCheckRunCount              graphql.Int\n\t\t\t\t\tCheckRunCountsByState      []data.ContextCountByState\n\t\t\t\t\tStatusContextCount         graphql.Int\n\t\t\t\t\tStatusContextCountsByState []data.ContextCountByState\n\t\t\t\t\tNodes                      []struct {\n\t\t\t\t\t\tTypename      graphql.String     `graphql:\"__typename\"`\n\t\t\t\t\t\tCheckRun      data.CheckRun      `graphql:\"... on CheckRun\"`\n\t\t\t\t\t\tStatusContext data.StatusContext `graphql:\"... on StatusContext\"`\n\t\t\t\t\t}\n\t\t\t\t} `graphql:\"contexts(last: 100)\"`\n\t\t\t}\n\t\t\tCheckSuites data.CheckSuites `graphql:\"checkSuites(last: 20)\"`\n\t\t}\n\t}, 1)\n\n\t// Set up the commit data\n\tenriched.Commits.Nodes[0].Commit.CheckSuites = opts.checkSuites\n\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.State = graphql.String(opts.rollupState)\n\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.TotalCount = graphql.Int(\n\t\tlen(opts.checkRuns),\n\t)\n\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.CheckRunCount = graphql.Int(\n\t\tlen(opts.checkRuns),\n\t)\n\n\t// Build context nodes from check runs and aggregate counts by state\n\tstateCounts := make(map[string]int)\n\tfor _, cr := range opts.checkRuns {\n\t\tcontextNode := struct {\n\t\t\tTypename      graphql.String     `graphql:\"__typename\"`\n\t\t\tCheckRun      data.CheckRun      `graphql:\"... on CheckRun\"`\n\t\t\tStatusContext data.StatusContext `graphql:\"... on StatusContext\"`\n\t\t}{\n\t\t\tTypename: \"CheckRun\",\n\t\t\tCheckRun: cr,\n\t\t}\n\t\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.Nodes = append(\n\t\t\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.Nodes,\n\t\t\tcontextNode,\n\t\t)\n\n\t\t// Aggregate by state (status for in-progress, conclusion for completed)\n\t\tstate := string(cr.Status)\n\t\tif state == \"COMPLETED\" {\n\t\t\tstate = string(cr.Conclusion)\n\t\t}\n\t\tstateCounts[state]++\n\t}\n\n\t// Populate CheckRunCountsByState from aggregated counts\n\tfor state, count := range stateCounts {\n\t\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.CheckRunCountsByState = append(\n\t\t\tenriched.Commits.Nodes[0].Commit.StatusCheckRollup.Contexts.CheckRunCountsByState,\n\t\t\tdata.ContextCountByState{\n\t\t\t\tState: checks.CheckRunState(state),\n\t\t\t\tCount: graphql.Int(count),\n\t\t\t},\n\t\t)\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.width = 80\n\tm.pr = &prrow.PullRequest{\n\t\tCtx: ctx,\n\t\tData: &prrow.Data{\n\t\t\tPrimary: &data.PullRequestData{\n\t\t\t\tRepository: data.Repository{\n\t\t\t\t\tBranchProtectionRules: branchRules,\n\t\t\t\t},\n\t\t\t},\n\t\t\tIsEnriched: true,\n\t\t\tEnriched:   enriched,\n\t\t},\n\t}\n\treturn m\n}\n\nfunc makeCheckRun(name string, status string, conclusion checks.CheckRunState) data.CheckRun {\n\treturn data.CheckRun{\n\t\tName:       graphql.String(name),\n\t\tStatus:     graphql.String(status),\n\t\tConclusion: conclusion,\n\t}\n}\n\nfunc makeCheckSuite(workflowName string, status string, conclusion string) data.CheckSuiteNode {\n\treturn data.CheckSuiteNode{\n\t\tStatus:     graphql.String(status),\n\t\tConclusion: graphql.String(conclusion),\n\t\tWorkflowRun: struct {\n\t\t\tWorkflow struct {\n\t\t\t\tName graphql.String\n\t\t\t}\n\t\t}{\n\t\t\tWorkflow: struct {\n\t\t\t\tName graphql.String\n\t\t\t}{\n\t\t\t\tName: graphql.String(workflowName),\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc TestRenderChecks_AwaitingApproval(t *testing.T) {\n\t// Test that CheckSuites with conclusion: ACTION_REQUIRED are shown\n\t// under \"Awaiting Approval\" section\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 3,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\tmakeCheckSuite(\"Check Redirects\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"Check URL issues\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"PR Test\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns:   []data.CheckRun{},\n\t\trollupState: \"SUCCESS\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should show \"Awaiting Approval\" section header\n\trequire.True(t, strings.Contains(got, \"Awaiting Approval\"),\n\t\t\"expected 'Awaiting Approval' section, got: %q\", got)\n\n\t// Should show all three workflow names\n\trequire.True(t, strings.Contains(got, \"Check Redirects\"),\n\t\t\"expected 'Check Redirects' workflow, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"Check URL issues\"),\n\t\t\"expected 'Check URL issues' workflow, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"PR Test\"),\n\t\t\"expected 'PR Test' workflow, got: %q\", got)\n\n\t// Should show the action required icon\n\trequire.True(t, strings.Contains(got, constants.ActionRequiredIcon),\n\t\t\"expected ActionRequiredIcon, got: %q\", got)\n}\n\nfunc TestRenderChecks_PendingCheckSuites(t *testing.T) {\n\t// Test that CheckSuites with status: QUEUED/PENDING/WAITING are shown\n\t// under \"Pending\" section\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 2,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\tmakeCheckSuite(\"Build\", \"QUEUED\", \"\"),\n\t\t\t\tmakeCheckSuite(\"Deploy\", \"PENDING\", \"\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns:   []data.CheckRun{},\n\t\trollupState: \"PENDING\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should show \"Pending\" section header\n\trequire.True(t, strings.Contains(got, \"Pending\"),\n\t\t\"expected 'Pending' section, got: %q\", got)\n\n\t// Should show workflow names\n\trequire.True(t, strings.Contains(got, \"Build\"),\n\t\t\"expected 'Build' workflow, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"Deploy\"),\n\t\t\"expected 'Deploy' workflow, got: %q\", got)\n\n\t// Should show waiting icon\n\trequire.True(t, strings.Contains(got, constants.WaitingIcon),\n\t\t\"expected WaitingIcon, got: %q\", got)\n}\n\nfunc TestRenderChecks_RequiredButNotReported(t *testing.T) {\n\t// Test that required status checks from branch protection rules\n\t// that haven't been reported yet are shown as pending\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.CheckSuiteNode{},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\t// Only one check has been reported\n\t\t\tmakeCheckRun(\"lint\", \"COMPLETED\", \"SUCCESS\"),\n\t\t},\n\t\trollupState: \"SUCCESS\",\n\t\trequiredStatusChecks: []string{\n\t\t\t\"lint\",            // This one is reported\n\t\t\t\"check-redirects\", // This one is NOT reported\n\t\t\t\"tests\",           // This one is NOT reported\n\t\t},\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should show \"Pending\" section for unreported required checks\n\trequire.True(t, strings.Contains(got, \"Pending\"),\n\t\t\"expected 'Pending' section for unreported required checks, got: %q\", got)\n\n\t// Should show the unreported required checks\n\trequire.True(t, strings.Contains(got, \"check-redirects\"),\n\t\t\"expected 'check-redirects' as pending, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"tests\"),\n\t\t\"expected 'tests' as pending, got: %q\", got)\n\n\t// Should NOT show \"lint\" in pending since it was reported\n\t// Count occurrences - lint should only appear once (in the success section)\n\tlintCount := strings.Count(got, \"lint\")\n\trequire.Equal(\n\t\tt,\n\t\t1,\n\t\tlintCount,\n\t\t\"expected 'lint' to appear exactly once (not in pending), got %d occurrences in: %q\",\n\t\tlintCount,\n\t\tgot,\n\t)\n}\n\nfunc TestRenderChecks_MixedStates(t *testing.T) {\n\t// Test a realistic scenario with:\n\t// - Awaiting approval workflows\n\t// - Some successful checks\n\t// - Required checks not yet reported\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 3,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\t// Awaiting approval\n\t\t\t\tmakeCheckSuite(\"Check Redirects\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"PR Test\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\t// Completed successfully (not ACTION_REQUIRED)\n\t\t\t\tmakeCheckSuite(\"PR labeler\", \"COMPLETED\", \"SUCCESS\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\t// Successful checks from PR labeler\n\t\t\tmakeCheckRun(\"Label by path\", \"COMPLETED\", \"SUCCESS\"),\n\t\t\tmakeCheckRun(\"Label by size\", \"COMPLETED\", \"SUCCESS\"),\n\t\t},\n\t\trollupState: \"SUCCESS\",\n\t\trequiredStatusChecks: []string{\n\t\t\t\"Label by path\",   // Reported\n\t\t\t\"check-redirects\", // NOT reported (from awaiting approval workflow)\n\t\t\t\"tests\",           // NOT reported (from awaiting approval workflow)\n\t\t},\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should have \"Awaiting Approval\" section\n\trequire.True(t, strings.Contains(got, \"Awaiting Approval\"),\n\t\t\"expected 'Awaiting Approval' section, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"Check Redirects\"),\n\t\t\"expected 'Check Redirects' in awaiting approval, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"PR Test\"),\n\t\t\"expected 'PR Test' in awaiting approval, got: %q\", got)\n\n\t// Should have \"Pending\" section for required but not reported\n\trequire.True(t, strings.Contains(got, \"Pending\"),\n\t\t\"expected 'Pending' section, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"check-redirects\"),\n\t\t\"expected 'check-redirects' as pending, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"tests\"),\n\t\t\"expected 'tests' as pending, got: %q\", got)\n\n\t// Should have successful checks\n\trequire.True(t, strings.Contains(got, \"Label by path\"),\n\t\t\"expected 'Label by path' check, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"Label by size\"),\n\t\t\"expected 'Label by size' check, got: %q\", got)\n\trequire.True(t, strings.Contains(got, constants.SuccessIcon),\n\t\t\"expected SuccessIcon for successful checks, got: %q\", got)\n}\n\nfunc TestRenderChecks_NoChecks(t *testing.T) {\n\t// Test that \"No checks to display...\" is shown when there are no checks\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.CheckSuiteNode{},\n\t\t},\n\t\tcheckRuns:            []data.CheckRun{},\n\t\trollupState:          \"SUCCESS\",\n\t\trequiredStatusChecks: []string{},\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\trequire.True(t, strings.Contains(got, \"No checks to display\"),\n\t\t\"expected 'No checks to display...' message, got: %q\", got)\n}\n\nfunc TestRenderChecks_FailedChecks(t *testing.T) {\n\t// Test that failed checks are displayed with failure icon\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.CheckSuiteNode{},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\tmakeCheckRun(\"build\", \"COMPLETED\", \"FAILURE\"),\n\t\t\tmakeCheckRun(\"lint\", \"COMPLETED\", \"SUCCESS\"),\n\t\t},\n\t\trollupState: \"FAILURE\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should show both checks\n\trequire.True(t, strings.Contains(got, \"build\"),\n\t\t\"expected 'build' check, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"lint\"),\n\t\t\"expected 'lint' check, got: %q\", got)\n\n\t// Should have failure icon\n\trequire.True(t, strings.Contains(got, constants.FailureIcon),\n\t\t\"expected FailureIcon for failed check, got: %q\", got)\n\n\t// Should have success icon\n\trequire.True(t, strings.Contains(got, constants.SuccessIcon),\n\t\t\"expected SuccessIcon for successful check, got: %q\", got)\n}\n\nfunc TestRenderChecks_InProgressChecks(t *testing.T) {\n\t// Test that in-progress checks are displayed with waiting icon\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.CheckSuiteNode{},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\tmakeCheckRun(\"build\", \"IN_PROGRESS\", \"\"),\n\t\t\tmakeCheckRun(\"lint\", \"QUEUED\", \"\"),\n\t\t},\n\t\trollupState: \"PENDING\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tgot := m.renderChecks()\n\n\t// Should show both checks\n\trequire.True(t, strings.Contains(got, \"build\"),\n\t\t\"expected 'build' check, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"lint\"),\n\t\t\"expected 'lint' check, got: %q\", got)\n\n\t// Should have waiting icon for in-progress checks\n\trequire.True(t, strings.Contains(got, constants.WaitingIcon),\n\t\t\"expected WaitingIcon for in-progress checks, got: %q\", got)\n}\n\nfunc TestGetChecksStats_AwaitingApproval(t *testing.T) {\n\t// Test that getChecksStats correctly counts awaiting approval\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 3,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\tmakeCheckSuite(\"Check Redirects\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"Check URL issues\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"PR Test\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns:   []data.CheckRun{},\n\t\trollupState: \"SUCCESS\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tstats := m.getChecksStats()\n\n\trequire.Equal(t, 3, stats.awaitingApproval,\n\t\t\"expected 3 awaiting approval, got: %d\", stats.awaitingApproval)\n}\n\nfunc TestGetChecksStats_PendingCheckSuites(t *testing.T) {\n\t// Test that getChecksStats correctly counts pending check suites as inProgress\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 2,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\tmakeCheckSuite(\"Build\", \"QUEUED\", \"\"),\n\t\t\t\tmakeCheckSuite(\"Deploy\", \"WAITING\", \"\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns:   []data.CheckRun{},\n\t\trollupState: \"PENDING\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tstats := m.getChecksStats()\n\n\trequire.Equal(t, 2, stats.inProgress,\n\t\t\"expected 2 in progress (from pending check suites), got: %d\", stats.inProgress)\n}\n\nfunc TestGetChecksStats_Mixed(t *testing.T) {\n\t// Test a mix of check states\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 2,\n\t\t\tNodes: []data.CheckSuiteNode{\n\t\t\t\tmakeCheckSuite(\"Check Redirects\", \"COMPLETED\", \"ACTION_REQUIRED\"),\n\t\t\t\tmakeCheckSuite(\"Build\", \"QUEUED\", \"\"),\n\t\t\t},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\tmakeCheckRun(\"lint\", \"COMPLETED\", \"SUCCESS\"),\n\t\t\tmakeCheckRun(\"test\", \"COMPLETED\", \"FAILURE\"),\n\t\t\tmakeCheckRun(\"build\", \"IN_PROGRESS\", \"\"),\n\t\t},\n\t\trollupState: \"FAILURE\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\tstats := m.getChecksStats()\n\n\trequire.Equal(t, 1, stats.awaitingApproval,\n\t\t\"expected 1 awaiting approval, got: %d\", stats.awaitingApproval)\n\trequire.Equal(t, 1, stats.succeeded,\n\t\t\"expected 1 succeeded, got: %d\", stats.succeeded)\n\trequire.Equal(t, 1, stats.failed,\n\t\t\"expected 1 failed, got: %d\", stats.failed)\n\t// 1 from IN_PROGRESS check run + 1 from QUEUED check suite\n\trequire.Equal(t, 2, stats.inProgress,\n\t\t\"expected 2 in progress, got: %d\", stats.inProgress)\n}\n\nfunc TestViewChecksBar_NarrowWidth_NoPanic(t *testing.T) {\n\t// Regression test for https://github.com/dlvhdr/gh-dash/issues/795\n\t// When the sidebar is very narrow, viewChecksBar() computes a negative\n\t// width for strings.Repeat, which panics.\n\topts := checksTestOptions{\n\t\tcheckSuites: data.CheckSuites{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.CheckSuiteNode{},\n\t\t},\n\t\tcheckRuns: []data.CheckRun{\n\t\t\tmakeCheckRun(\"build\", \"COMPLETED\", \"FAILURE\"),\n\t\t\tmakeCheckRun(\"lint\", \"COMPLETED\", \"SUCCESS\"),\n\t\t\tmakeCheckRun(\"test\", \"IN_PROGRESS\", \"\"),\n\t\t},\n\t\trollupState: \"FAILURE\",\n\t}\n\n\tm := newTestModelForChecks(t, opts)\n\n\t// Simulate a very narrow sidebar that would make w negative\n\tfor _, width := range []int{0, 1, 5, 10} {\n\t\tm.width = width\n\t\t// Should not panic\n\t\trequire.NotPanics(t, func() {\n\t\t\tm.viewChecksBar()\n\t\t}, \"viewChecksBar panicked with width=%d\", width)\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prview/commits.go",
    "content": "package prview\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"github.com/charmbracelet/x/ansi\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n\tchecks \"github.com/dlvhdr/x/gh-checks\"\n)\n\nfunc (m *Model) renderCommits() string {\n\tmain := m.ctx.Styles.Common.MainTextStyle\n\tfaint := m.ctx.Styles.Common.FaintTextStyle\n\tfainter := lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintBorder)\n\n\tif !m.pr.Data.IsEnriched {\n\t\treturn lipgloss.JoinHorizontal(\n\t\t\tlipgloss.Top,\n\t\t\tm.ctx.Styles.Common.WaitingGlyph,\n\t\t\t\" \",\n\t\t\tfaint.Render(\"Loading...\"),\n\t\t)\n\t}\n\n\tcommits := m.pr.Data.Enriched.AllCommits.Nodes\n\theading := m.ctx.Styles.Common.MainTextStyle.MarginBottom(1).Underline(true).Render(\n\t\tfmt.Sprintf(\"%s  %d commits\", constants.CommitIcon, len(commits)))\n\n\trendered := make([]string, len(commits))\n\tfor i, commit := range commits {\n\t\tcommit := commit.Commit\n\t\tname := commit.Author.User.Login\n\t\tif name == \"\" {\n\t\t\tname = commit.Author.Name\n\t\t}\n\t\tleft := fmt.Sprintf(\n\t\t\t\"%s %s\",\n\t\t\tfaint.Render(constants.VerticalCommitIcon),\n\t\t\tmain.Render(commit.MessageHeadline),\n\t\t)\n\t\tright := faint.Render(commit.AbbreviatedOid)\n\t\twright := lipgloss.Width(right)\n\t\tleft = ansi.Truncate(left, max(0, m.getIndentedContentWidth()-wright-1), constants.Ellipsis)\n\t\tpad := fainter.Render(\" \" + strings.Repeat(constants.HorizontalLineIcon,\n\t\t\tmax(1, m.getIndentedContentWidth()-lipgloss.Width(left)-wright)-1) + \" \")\n\n\t\ttitle := lipgloss.JoinHorizontal(lipgloss.Top, left, pad, right)\n\n\t\tstatsStr := \"\"\n\t\tif commit.StatusCheckRollup.Contexts.TotalCount > 0 {\n\t\t\tstats := m.getStatusCheckRollupStats(commit.StatusCheckRollup)\n\t\t\tstatsStr = lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\t\t\" \",\n\t\t\t\tfaint.Render(constants.SmallDotIcon),\n\t\t\t\t\" \",\n\t\t\t\tm.commitStateSign(commit.StatusCheckRollup.State),\n\t\t\t\t\" \",\n\t\t\t\tfaint.Render(fmt.Sprintf(\"%d/%d\", stats.succeeded,\n\t\t\t\t\tcommit.StatusCheckRollup.Contexts.TotalCount)),\n\t\t\t)\n\t\t}\n\n\t\tdesc := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\tfainter.Render(\"│ \"),\n\t\t\tfaint.Render(fmt.Sprintf(\"@%s\", name)),\n\t\t\tfaint.Render(\" committed \"),\n\t\t\tfaint.Render(utils.TimeElapsed(commit.CommittedDate)),\n\t\t\tfaint.Render(\" ago\"),\n\t\t\tstatsStr,\n\t\t)\n\t\trendered[i] = lipgloss.JoinVertical(lipgloss.Left, title, desc)\n\t}\n\n\tres := heading\n\tfor i, r := range rendered {\n\t\tres = lipgloss.JoinVertical(lipgloss.Left, res, r)\n\t\tif i < len(rendered)-1 {\n\t\t\tres = lipgloss.JoinVertical(lipgloss.Left, res, fainter.Render(\"│\"))\n\t\t}\n\t}\n\n\treturn res\n}\n\nfunc (m *Model) commitStateSign(state checks.CommitState) string {\n\tswitch state {\n\tcase checks.CommitStateError, checks.CommitStateFailure:\n\t\treturn m.ctx.Styles.Common.FailureGlyph\n\tcase checks.CommitStatePending, checks.CommitStateExpected, checks.CommitStateUnknown:\n\t\treturn m.ctx.Styles.Common.WaitingGlyph\n\tcase checks.CommitStateSuccess:\n\t\treturn m.ctx.Styles.Common.SuccessGlyph\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "internal/tui/components/prview/files.go",
    "content": "package prview\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nfunc (m *Model) renderChangesOverview() string {\n\tchanges := lipgloss.NewStyle().\n\t\tBorder(lipgloss.NormalBorder(), false, false, true, false).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).\n\t\tWidth(m.getIndentedContentWidth()).\n\t\tPadding(1)\n\n\tcommits := lipgloss.NewStyle().\n\t\tWidth(m.getIndentedContentWidth()).\n\t\tPadding(1)\n\n\tbox := lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder(), true).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).\n\t\tWidth(m.getIndentedContentWidth())\n\n\ttime := lipgloss.NewStyle().Render(utils.TimeElapsed(m.pr.Data.Primary.UpdatedAt))\n\treturn box.Render(\n\t\tlipgloss.JoinVertical(lipgloss.Left,\n\t\t\tchanges.Render(\n\t\t\t\tlipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\t\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\" \"),\n\t\t\t\t\tfmt.Sprintf(\"%d files changed\", m.pr.Data.Primary.Files.TotalCount),\n\t\t\t\t\t\" \",\n\t\t\t\t\tm.pr.RenderLines(false)),\n\t\t\t),\n\t\t\tcommits.Render(\n\t\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\t\tlipgloss.Top,\n\t\t\t\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\" \"),\n\t\t\t\t\tfmt.Sprintf(\"%d commits\", m.pr.Data.Primary.Commits.TotalCount),\n\t\t\t\t\t\" \",\n\t\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\t\tForeground(m.ctx.Theme.FaintText).\n\t\t\t\t\t\tRender(fmt.Sprintf(\"%s ago\", time)),\n\t\t\t\t),\n\t\t\t),\n\t\t),\n\t)\n}\n\nfunc (m *Model) renderChangedFiles() string {\n\tfiles := make([]string, 0)\n\tfor _, file := range m.pr.Data.Primary.Files.Nodes {\n\t\tfiles = append(files, m.renderFile(file))\n\t}\n\n\treturn lipgloss.JoinVertical(lipgloss.Left, files...)\n}\n\nfunc (m *Model) renderFile(file data.ChangedFile) string {\n\ticon := m.renderChangeTypeIcon(file.ChangeType)\n\tadditions := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.SuccessText).\n\t\tWidth(5).\n\t\tRender(fmt.Sprintf(\"+%d\", file.Additions))\n\tdeletions := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.ErrorText).\n\t\tWidth(5).\n\t\tRender(fmt.Sprintf(\"-%d\", file.Deletions))\n\tprefix := lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tlipgloss.JoinHorizontal(lipgloss.Top, additions, deletions),\n\t\t\" \",\n\t\ticon,\n\t\t\" \")\n\n\tpath := file.Path\n\tremaining := m.getIndentedContentWidth() - lipgloss.Width(prefix)\n\tif len(path) > remaining {\n\t\tpath = lipgloss.JoinVertical(lipgloss.Left, path[0:remaining], \" \"+path[remaining:])\n\t}\n\n\treturn lipgloss.JoinHorizontal(\n\t\tlipgloss.Top,\n\t\tprefix,\n\t\tpath,\n\t)\n}\n\nfunc (m *Model) renderChangeTypeIcon(changeType string) string {\n\tswitch changeType {\n\tcase \"ADDED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.SuccessText).Render(\"\")\n\tcase \"DELETED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.ErrorText).Render(\"\")\n\tcase \"RENAMED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.WarningText).Render(\"\")\n\tcase \"COPIED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.WarningText).Render(\"\")\n\tcase \"MODIFIED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.WarningText).Render(\"\")\n\tcase \"CHANGED\":\n\t\treturn lipgloss.NewStyle().Foreground(m.ctx.Theme.WarningText).Render(\"\")\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prview/prview.go",
    "content": "package prview\n\nimport (\n\t\"fmt\"\n\t\"image/color\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/textarea\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/carousel\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/inputbox\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prssection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nvar (\n\thtmlCommentRegex = regexp.MustCompile(\"(?U)<!--(.|[[:space:]])*-->\")\n\tlineCleanupRegex = regexp.MustCompile(`((\\n)+|^)([^\\r\\n]*\\|[^\\r\\n]*(\\n)?)+`)\n\tfoldBodyHeight   = 8\n)\n\ntype Model struct {\n\tctx       *context.ProgramContext\n\tsectionId int\n\tpr        *prrow.PullRequest\n\twidth     int\n\tcarousel  carousel.Model\n\n\tShowConfirmCancel bool\n\tisCommenting      bool\n\tisApproving       bool\n\tisAssigning       bool\n\tisUnassigning     bool\n\tsummaryViewMore   bool\n\n\tinputBox inputbox.Model\n}\n\nvar tabs = []string{\" Overview\", \" Activity\", \" Commits\", \" Checks\", \" Files Changed\"}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tinputBox := inputbox.NewModel(ctx)\n\tinputBox.SetHeight(common.InputBoxHeight)\n\n\tc := carousel.New(\n\t\tcarousel.WithItems(tabs),\n\t\tcarousel.WithWidth(ctx.MainContentWidth),\n\t)\n\n\treturn Model{\n\t\tpr: nil,\n\n\t\tisCommenting:  false,\n\t\tisApproving:   false,\n\t\tisAssigning:   false,\n\t\tisUnassigning: false,\n\t\tcarousel:      c,\n\n\t\tinputBox: inputBox,\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tvar (\n\t\tcmds  []tea.Cmd\n\t\tcmd   tea.Cmd\n\t\ttaCmd tea.Cmd\n\t)\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tif m.isCommenting {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tif len(strings.Trim(m.inputBox.Value(), \" \")) != 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: prssection.SectionType}\n\t\t\t\t\tcmd = tasks.CommentOnPR(m.ctx, sid, m.pr.Data.Primary, m.inputBox.Value())\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isCommenting = false\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tif !m.ShowConfirmCancel {\n\t\t\t\t\tm.shouldCancelComment()\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tif msg.String() == \"Y\" || msg.String() == \"y\" {\n\t\t\t\t\tif m.shouldCancelComment() {\n\t\t\t\t\t\treturn m, nil\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif m.ShowConfirmCancel && (msg.String() == \"N\" || msg.String() == \"n\") {\n\t\t\t\t\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\t\t\t\t\tm.ShowConfirmCancel = false\n\t\t\t\t\treturn m, nil\n\t\t\t\t}\n\t\t\t\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\t\t\t\tm.ShowConfirmCancel = false\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else if m.isApproving {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tcomment := \"\"\n\t\t\t\tif len(strings.Trim(m.inputBox.Value(), \" \")) != 0 {\n\t\t\t\t\tcomment = m.inputBox.Value()\n\t\t\t\t}\n\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: prssection.SectionType}\n\t\t\t\tcmd = tasks.ApprovePR(m.ctx, sid, m.pr.Data.Primary, comment)\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isApproving = false\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tif m.shouldCancelComment() {\n\t\t\t\t\treturn m, nil\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tm.inputBox.SetPrompt(constants.ApprovalPrompt)\n\t\t\t\tm.ShowConfirmCancel = false\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else if m.isAssigning {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tusernames := strings.Fields(m.inputBox.Value())\n\t\t\t\tif len(usernames) > 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: prssection.SectionType}\n\t\t\t\t\tcmd = tasks.AssignPR(m.ctx, sid, m.pr.Data.Primary, usernames)\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isAssigning = false\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isAssigning = false\n\t\t\t\treturn m, nil\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else if m.isUnassigning {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+d\":\n\t\t\t\tusernames := strings.Fields(m.inputBox.Value())\n\t\t\t\tif len(usernames) > 0 {\n\t\t\t\t\tsid := tasks.SectionIdentifier{Id: m.sectionId, Type: prssection.SectionType}\n\t\t\t\t\tcmd = tasks.UnassignPR(m.ctx, sid, m.pr.Data.Primary, usernames)\n\t\t\t\t}\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isUnassigning = false\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"esc\", \"ctrl+c\":\n\t\t\t\tm.inputBox.Blur()\n\t\t\t\tm.isUnassigning = false\n\t\t\t\treturn m, nil\n\t\t\t}\n\n\t\t\tm.inputBox, taCmd = m.inputBox.Update(msg)\n\t\t\tcmds = append(cmds, cmd, taCmd)\n\t\t} else {\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, keys.PRKeys.PrevSidebarTab):\n\t\t\t\tm.carousel.MoveLeft()\n\t\t\tcase key.Matches(msg, keys.PRKeys.NextSidebarTab):\n\t\t\t\tm.carousel.MoveRight()\n\t\t\t}\n\t\t}\n\t}\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m Model) View() string {\n\theader := strings.Builder{}\n\n\theader.WriteString(m.renderFullNameAndNumber())\n\theader.WriteString(\"\\n\")\n\n\theader.WriteString(m.renderTitle())\n\theader.WriteString(\"\\n\\n\")\n\theader.WriteString(m.renderBranches())\n\theader.WriteString(\"\\n\\n\")\n\theader.WriteString(m.renderAuthor())\n\theader.WriteString(\"\\n\\n\")\n\theader.WriteString(lipgloss.NewStyle().Width(m.width).\n\t\tBorder(lipgloss.NormalBorder(), false, false, true, false).\n\t\tBorderForeground(m.ctx.Theme.FaintBorder).\n\t\tRender(m.carousel.View()),\n\t)\n\n\theader.WriteString(\"\\n\")\n\n\tbody := strings.Builder{}\n\n\tswitch m.carousel.SelectedItem() {\n\tcase tabs[0]:\n\t\treviewers := m.renderRequestedReviewers()\n\t\tif reviewers != \"\" {\n\t\t\tbody.WriteString(reviewers)\n\t\t\tbody.WriteString(\"\\n\\n\")\n\t\t}\n\n\t\tlabels := m.renderLabels()\n\t\tif labels != \"\" {\n\t\t\tbody.WriteString(labels)\n\t\t\tbody.WriteString(\"\\n\\n\")\n\t\t}\n\n\t\tbody.WriteString(m.renderSummary())\n\t\tbody.WriteString(\"\\n\\n\")\n\t\tbody.WriteString(\n\t\t\tm.ctx.Styles.Common.MainTextStyle.MarginBottom(1).Underline(true).Render(\" Changes\"),\n\t\t)\n\t\tbody.WriteString(\"\\n\")\n\t\tbody.WriteString(m.renderChangesOverview())\n\t\tbody.WriteString(\"\\n\\n\")\n\t\tbody.WriteString(\n\t\t\tm.ctx.Styles.Common.MainTextStyle.MarginBottom(1).Underline(true).Render(\" Checks\"),\n\t\t)\n\t\tbody.WriteString(\"\\n\")\n\t\tbody.WriteString(m.renderChecksOverview())\n\n\t\tif m.isCommenting || m.isApproving || m.isAssigning || m.isUnassigning {\n\t\t\tbody.WriteString(m.inputBox.View())\n\t\t}\n\n\tcase tabs[1]:\n\t\tbody.WriteString(m.renderActivity())\n\tcase tabs[2]:\n\t\tbody.WriteString(m.renderCommits())\n\tcase tabs[3]:\n\t\tbody.WriteString(m.renderChecksOverview())\n\t\tbody.WriteString(\"\\n\\n\")\n\t\tbody.WriteString(m.renderChecks())\n\tcase tabs[4]:\n\t\tbody.WriteString(m.renderChangedFiles())\n\t}\n\n\treturn lipgloss.JoinVertical(lipgloss.Left,\n\t\theader.String(),\n\t\tlipgloss.NewStyle().Padding(0, m.ctx.Styles.Sidebar.ContentPadding).Render(body.String()),\n\t)\n}\n\nfunc (m *Model) renderFullNameAndNumber() string {\n\treturn common.RenderPreviewHeader(\n\t\tm.ctx.Theme,\n\t\tm.width,\n\t\tfmt.Sprintf(\n\t\t\t\"%s · #%d\",\n\t\t\tm.pr.Data.Primary.GetRepoNameWithOwner(),\n\t\t\tm.pr.Data.Primary.GetNumber(),\n\t\t),\n\t)\n}\n\nfunc (m *Model) renderTitle() string {\n\treturn common.RenderPreviewTitle(\n\t\tm.ctx.Theme,\n\t\tm.ctx.Styles.Common,\n\t\tm.width,\n\t\tm.pr.Data.Primary.Title,\n\t)\n}\n\nfunc (m *Model) renderBranches() string {\n\treturn lipgloss.JoinHorizontal(lipgloss.Left,\n\t\t\" \",\n\t\tm.renderStatusPill(),\n\t\t\" \",\n\t\tlipgloss.NewStyle().\n\t\t\tForeground(m.ctx.Theme.SecondaryText).\n\t\t\tRender(m.pr.Data.Primary.BaseRefName+\"  \"+m.pr.Data.Primary.HeadRefName))\n}\n\nfunc (m *Model) renderStatusPill() string {\n\tvar bgColor color.Color\n\tswitch m.pr.Data.Primary.State {\n\tcase \"OPEN\":\n\t\tif m.pr.Data.Primary.IsDraft {\n\t\t\tbgColor = m.ctx.Theme.FaintText.Dark\n\t\t} else {\n\t\t\tbgColor = m.ctx.Styles.Colors.OpenPR.Dark\n\t\t}\n\tcase \"CLOSED\":\n\t\tbgColor = m.ctx.Styles.Colors.ClosedPR.Dark\n\tcase \"MERGED\":\n\t\tbgColor = m.ctx.Styles.Colors.MergedPR.Dark\n\t}\n\n\treturn m.ctx.Styles.PrView.PillStyle.\n\t\tBorderForeground(bgColor).\n\t\tBackground(bgColor).\n\t\tRender(m.pr.RenderState())\n}\n\nfunc (m *Model) renderLabels() string {\n\twidth := m.getIndentedContentWidth()\n\tlabels := m.pr.Data.Primary.Labels.Nodes\n\tstyle := m.ctx.Styles.PrView.PillStyle\n\tif len(labels) == 0 {\n\t\treturn \"\"\n\t}\n\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\tm.ctx.Styles.Common.MainTextStyle.Underline(true).Bold(true).Render(\n\t\t\tfmt.Sprintf(\"%s Labels\", constants.LabelsIcon)),\n\t\t\"\",\n\t\tcommon.RenderLabels(width, labels, style),\n\t)\n}\n\ntype reviewerItem struct {\n\ttext string\n}\n\nfunc (m *Model) renderRequestedReviewers() string {\n\tif !m.pr.Data.IsEnriched {\n\t\treturn lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tm.ctx.Styles.Common.MainTextStyle.Underline(true).Bold(true).Render(\n\t\t\t\tfmt.Sprintf(\"%s Reviewers\", constants.CodeReviewIcon)),\n\t\t\t\"\",\n\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\tlipgloss.Top,\n\t\t\t\tm.ctx.Styles.Common.WaitingGlyph,\n\t\t\t\t\" \",\n\t\t\t\tm.ctx.Styles.Common.FaintTextStyle.Render(\"Loading...\"),\n\t\t\t),\n\t\t)\n\t}\n\n\treviewRequests := m.pr.Data.Enriched.ReviewRequests.Nodes\n\treviews := m.pr.Data.Enriched.Reviews.Nodes\n\tsuggestedReviewers := m.pr.Data.Enriched.SuggestedReviewers\n\n\tif len(reviewRequests) == 0 && len(reviews) == 0 && len(suggestedReviewers) == 0 {\n\t\treturn \"\"\n\t}\n\n\treviewStates := make(map[string]string)\n\tfor _, review := range reviews {\n\t\tlogin := review.Author.Login\n\t\texistingState := reviewStates[login]\n\t\t// Don't override APPROVED or CHANGES_REQUESTED with COMMENTED\n\t\tif review.State == \"COMMENTED\" &&\n\t\t\t(existingState == \"APPROVED\" || existingState == \"CHANGES_REQUESTED\") {\n\t\t\tcontinue\n\t\t}\n\t\treviewStates[login] = review.State\n\t}\n\n\treviewerItems := make([]reviewerItem, 0)\n\tfaintStyle := m.ctx.Styles.Common.FaintTextStyle\n\treviewerStyle := lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText)\n\tsuccessStyle := lipgloss.NewStyle().Foreground(m.ctx.Theme.SuccessText)\n\terrorStyle := lipgloss.NewStyle().Foreground(m.ctx.Theme.ErrorText)\n\n\tshownReviewers := make(map[string]bool)\n\n\tfor _, req := range reviewRequests {\n\t\tdisplayName := req.GetReviewerDisplayName()\n\t\tif displayName == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tshownReviewers[displayName] = true\n\n\t\tvar reviewerStr string\n\t\tstateIcon := \"\"\n\t\tif state, hasReview := reviewStates[displayName]; hasReview && state == \"COMMENTED\" {\n\t\t\tstateIcon = m.ctx.Styles.Common.CommentGlyph\n\t\t} else {\n\t\t\tstateIcon = m.ctx.Styles.Common.WaitingDotGlyph\n\t\t}\n\n\t\tif req.IsTeam() {\n\t\t\treviewerStr += reviewerStyle.Render(displayName)\n\t\t} else {\n\t\t\treviewerStr += reviewerStyle.Render(\"@\" + displayName)\n\t\t}\n\n\t\tif req.AsCodeOwner {\n\t\t\treviewerStr = lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\t\tfaintStyle.Render(constants.OwnerIcon), \" \", reviewerStr)\n\t\t}\n\t\treviewerStr = lipgloss.JoinHorizontal(lipgloss.Top, stateIcon, \" \", reviewerStr)\n\n\t\treviewerItems = append(reviewerItems, reviewerItem{text: reviewerStr})\n\t}\n\n\tfor login, state := range reviewStates {\n\t\tif shownReviewers[login] {\n\t\t\tcontinue\n\t\t}\n\t\tif state != \"APPROVED\" && state != \"CHANGES_REQUESTED\" && state != \"COMMENTED\" {\n\t\t\tcontinue\n\t\t}\n\t\tshownReviewers[login] = true\n\n\t\tvar stateIcon string\n\t\tswitch state {\n\t\tcase \"APPROVED\":\n\t\t\tstateIcon = successStyle.Render(constants.ApprovedIcon)\n\t\tcase \"CHANGES_REQUESTED\":\n\t\t\tstateIcon = errorStyle.Render(constants.ChangesRequestedIcon)\n\t\tcase \"COMMENTED\":\n\t\t\tstateIcon = m.ctx.Styles.Common.CommentGlyph\n\t\t}\n\t\treviewerStr := stateIcon + \" \" + reviewerStyle.Render(\"@\"+login)\n\n\t\treviewerItems = append(reviewerItems, reviewerItem{text: reviewerStr})\n\t}\n\n\t// Show suggested reviewers (= code owners) who haven't been requested or reviewed yet\n\tfor _, suggested := range suggestedReviewers {\n\t\tlogin := suggested.Reviewer.Login\n\t\tif shownReviewers[login] {\n\t\t\tcontinue\n\t\t}\n\t\tif suggested.IsAuthor {\n\t\t\tcontinue\n\t\t}\n\t\tshownReviewers[login] = true\n\n\t\treviewerStr := lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\tfaintStyle.Render(constants.OwnerIcon), \" \",\n\t\t\tfaintStyle.Render(\"@\"+login),\n\t\t)\n\n\t\treviewerItems = append(reviewerItems, reviewerItem{text: reviewerStr})\n\t}\n\n\tif len(reviewerItems) == 0 {\n\t\treturn \"\"\n\t}\n\n\twidth := m.getIndentedContentWidth()\n\tvar rows []string\n\tvar currentRow strings.Builder\n\tcurrentRowWidth := 0\n\n\tfor i, item := range reviewerItems {\n\t\titemWidth := lipgloss.Width(item.text)\n\t\tseparator := \", \"\n\t\tseparatorWidth := lipgloss.Width(separator)\n\n\t\t// Check if adding this item would exceed the width\n\t\tneedsSeparator := i < len(reviewerItems)-1\n\t\ttotalItemWidth := itemWidth\n\t\tif needsSeparator {\n\t\t\ttotalItemWidth += separatorWidth\n\t\t}\n\n\t\tif currentRowWidth > 0 && currentRowWidth+totalItemWidth > width {\n\t\t\t// Start a new row\n\t\t\trows = append(rows, currentRow.String())\n\t\t\tcurrentRow.Reset()\n\t\t\tcurrentRowWidth = 0\n\t\t}\n\n\t\tcurrentRow.WriteString(item.text)\n\t\tcurrentRowWidth += itemWidth\n\n\t\tif needsSeparator {\n\t\t\tcurrentRow.WriteString(separator)\n\t\t\tcurrentRowWidth += separatorWidth\n\t\t}\n\t}\n\n\t// Add the last row\n\tif currentRow.Len() > 0 {\n\t\trows = append(rows, currentRow.String())\n\t}\n\n\treturn lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\tm.ctx.Styles.Common.MainTextStyle.Underline(true).Bold(true).Render(\n\t\t\tfmt.Sprintf(\"%s Reviewers\", constants.CodeReviewIcon)),\n\t\t\"\",\n\t\tstrings.Join(rows, \"\\n\"),\n\t)\n}\n\nfunc (m *Model) renderAuthor() string {\n\tauthorAssociation := m.pr.Data.Primary.AuthorAssociation\n\tif authorAssociation == \"\" {\n\t\tauthorAssociation = \"unknown role\"\n\t}\n\ttime := lipgloss.NewStyle().Render(utils.TimeElapsed(m.pr.Data.Primary.CreatedAt))\n\treturn lipgloss.JoinHorizontal(lipgloss.Top,\n\t\t\" by \",\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.PrimaryText).Render(\n\t\t\tlipgloss.NewStyle().Bold(true).Render(\"@\"+m.pr.Data.Primary.Author.Login)),\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\n\t\t\tlipgloss.JoinHorizontal(lipgloss.Top, \" ⋅ \", time, \" ago\", \" ⋅ \")),\n\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(\n\t\t\tlipgloss.JoinHorizontal(lipgloss.Top, data.GetAuthorRoleIcon(m.pr.Data.Primary.AuthorAssociation,\n\t\t\t\tm.ctx.Theme),\n\t\t\t\t\" \", lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).Render(strings.ToLower(authorAssociation))),\n\t\t),\n\t)\n}\n\nfunc (m *Model) renderSummary() string {\n\twidth := m.getIndentedContentWidth()\n\t// Strip HTML comments from body and cleanup body.\n\tbody := htmlCommentRegex.ReplaceAllString(m.pr.Data.Primary.Body, \"\")\n\tbody = lineCleanupRegex.ReplaceAllString(body, \"\")\n\n\tdesc := m.ctx.Styles.Common.MainTextStyle.Bold(true).Underline(true).Render(\" Summary\")\n\ttitle := lipgloss.JoinVertical(\n\t\tlipgloss.Left,\n\t\tdesc,\n\t\t\"\",\n\t)\n\tsbody := lipgloss.NewStyle().Width(m.getIndentedContentWidth())\n\tbody = strings.TrimSpace(body)\n\tif body == \"\" {\n\t\treturn lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\ttitle,\n\t\t\tsbody.Italic(true).Foreground(m.ctx.Theme.FaintText).Render(\"No description provided.\"),\n\t\t)\n\t}\n\n\tmarkdownRenderer := markdown.GetMarkdownRenderer(width)\n\trendered, err := markdownRenderer.Render(body)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tbodyHeight := lipgloss.Height(rendered)\n\tif !m.summaryViewMore && bodyHeight > foldBodyHeight {\n\t\trendered = lipgloss.NewStyle().MaxHeight(foldBodyHeight).Render(rendered)\n\t\trendered = lipgloss.JoinVertical(lipgloss.Left,\n\t\t\trendered,\n\t\t\t\"\",\n\t\t\tlipgloss.PlaceHorizontal(m.getIndentedContentWidth(), lipgloss.Center,\n\t\t\t\tlipgloss.JoinHorizontal(\n\t\t\t\t\tlipgloss.Top,\n\t\t\t\t\tlipgloss.NewStyle().Bold(true).Italic(true).Render(\"Press \"),\n\t\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\t\t\t\tForeground(m.ctx.Theme.PrimaryText).\n\t\t\t\t\t\tRender(\"e\"),\n\t\t\t\t\tlipgloss.NewStyle().Bold(true).Italic(true).Render(\" to read more...\"),\n\t\t\t\t),\n\t\t\t),\n\t\t)\n\t}\n\n\treturn lipgloss.JoinVertical(lipgloss.Left, title,\n\t\tlipgloss.NewStyle().\n\t\t\tWidth(width).\n\t\t\tMaxWidth(width).\n\t\t\tAlign(lipgloss.Left).\n\t\t\tRender(rendered),\n\t)\n}\n\nfunc (m *Model) SetSectionId(id int) {\n\tm.sectionId = id\n}\n\nfunc (m *Model) SetRow(d *prrow.Data) {\n\tif d == nil {\n\t\tm.pr = nil\n\t} else {\n\t\tm.pr = &prrow.PullRequest{Ctx: m.ctx, Data: d}\n\t}\n}\n\ntype EnrichedPrMsg struct {\n\tId   int\n\tType string\n\tData data.EnrichedPullRequestData\n\tErr  error\n}\n\nfunc (m *Model) EnrichCurrRow() tea.Cmd {\n\tif m == nil || m.pr == nil || m.pr.Data.IsEnriched {\n\t\treturn nil\n\t}\n\turl := m.pr.Data.Primary.Url\n\treturn func() tea.Msg {\n\t\td, err := data.FetchPullRequest(url)\n\t\treturn EnrichedPrMsg{\n\t\t\tId:   m.sectionId,\n\t\t\tType: prssection.SectionType,\n\t\t\tData: d,\n\t\t\tErr:  err,\n\t\t}\n\t}\n}\n\nfunc (m *Model) SetWidth(width int) {\n\tm.width = width\n\tm.carousel.SetWidth(width)\n\tm.inputBox.SetWidth(width)\n}\n\nfunc (m *Model) IsTextInputBoxFocused() bool {\n\treturn m.isCommenting || m.isAssigning || m.isApproving || m.isUnassigning\n}\n\nfunc (m *Model) GetIsCommenting() bool {\n\treturn m.isCommenting\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.inputBox.UpdateProgramContext(ctx)\n\tm.carousel.SetStyles(\n\t\tcarousel.Styles{\n\t\t\tItem:     lipgloss.NewStyle().Padding(0, 1).Foreground(m.ctx.Theme.FaintText),\n\t\t\tSelected: lipgloss.NewStyle().Padding(0, 1).Bold(true),\n\t\t},\n\t)\n}\n\nfunc (m *Model) shouldCancelComment() bool {\n\tif !m.ShowConfirmCancel {\n\t\tm.inputBox.SetPrompt(\n\t\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.ErrorText).Render(\"Discard comment? (y/N)\"),\n\t\t)\n\t\tm.ShowConfirmCancel = true\n\t\treturn false\n\t}\n\tm.inputBox.Blur()\n\tm.isCommenting = false\n\tm.isApproving = false\n\tm.ShowConfirmCancel = false\n\treturn true\n}\n\nfunc (m *Model) SetIsCommenting(isCommenting bool) tea.Cmd {\n\tif m.pr == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isCommenting && isCommenting {\n\t\tm.inputBox.Reset()\n\t}\n\tm.isCommenting = isCommenting\n\tm.inputBox.SetPrompt(constants.CommentPrompt)\n\n\tif isCommenting {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) getIndentedContentWidth() int {\n\treturn m.width - 3*m.ctx.Styles.Sidebar.ContentPadding\n}\n\nfunc (m *Model) GetIsApproving() bool {\n\treturn m.isApproving\n}\n\nfunc (m *Model) SetIsApproving(isApproving bool) tea.Cmd {\n\tif m.pr == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isApproving && isApproving {\n\t\tm.inputBox.Reset()\n\t}\n\tm.isApproving = isApproving\n\tm.inputBox.SetPrompt(constants.ApprovalPrompt)\n\tm.inputBox.SetValue(m.ctx.Config.Defaults.PrApproveComment)\n\n\tif isApproving {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) GetIsAssigning() bool {\n\treturn m.isAssigning\n}\n\nfunc (m *Model) SetIsAssigning(isAssigning bool) tea.Cmd {\n\tif m.pr == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isAssigning && isAssigning {\n\t\tm.inputBox.Reset()\n\t}\n\tm.isAssigning = isAssigning\n\tm.inputBox.SetPrompt(constants.AssignPrompt)\n\tif !m.userAssignedToPr(m.ctx.User) {\n\t\tm.inputBox.SetValue(m.ctx.User)\n\t}\n\n\tif isAssigning {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) userAssignedToPr(login string) bool {\n\tfor _, a := range m.pr.Data.Primary.Assignees.Nodes {\n\t\tif login == a.Login {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (m *Model) GetIsUnassigning() bool {\n\treturn m.isUnassigning\n}\n\nfunc (m *Model) SetIsUnassigning(isUnassigning bool) tea.Cmd {\n\tif m.pr == nil {\n\t\treturn nil\n\t}\n\n\tif !m.isUnassigning && isUnassigning {\n\t\tm.inputBox.Reset()\n\t}\n\tm.isUnassigning = isUnassigning\n\tm.inputBox.SetPrompt(constants.UnassignPrompt)\n\tm.inputBox.SetValue(strings.Join(m.prAssignees(), \"\\n\"))\n\n\tif isUnassigning {\n\t\treturn tea.Sequence(textarea.Blink, m.inputBox.Focus())\n\t}\n\treturn nil\n}\n\nfunc (m *Model) prAssignees() []string {\n\tvar assignees []string\n\tfor _, n := range m.pr.Data.Primary.Assignees.Nodes {\n\t\tassignees = append(assignees, n.Login)\n\t}\n\treturn assignees\n}\n\nfunc (m *Model) GoToFirstTab() {\n\tm.carousel.SetCursor(0)\n}\n\nfunc (m *Model) GoToActivityTab() {\n\tm.carousel.SetCursor(1) // Activity is the second tab (index 1)\n}\n\nfunc (m Model) SelectedTab() string {\n\treturn m.carousel.SelectedItem()\n}\n\nfunc (m *Model) SetSummaryViewMore() {\n\tm.summaryViewMore = true\n}\n\nfunc (m *Model) SetSummaryViewLess() {\n\tm.summaryViewMore = false\n}\n\nfunc (m *Model) SetEnrichedPR(data data.EnrichedPullRequestData) {\n\tif m.pr.Data.Primary.Url == data.Url {\n\t\tm.pr.Data.Enriched = data\n\t\tm.pr.Data.IsEnriched = true\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/prview/reviewers_test.go",
    "content": "package prview\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/charmbracelet/x/ansi\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\nfunc newTestModel(t *testing.T, prData *data.PullRequestData) Model {\n\treturn newTestModelWithWidth(t, prData, 0)\n}\n\nfunc newTestModelWithWidth(t *testing.T, prData *data.PullRequestData, width int) Model {\n\tt.Helper()\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.pr = &prrow.PullRequest{\n\t\tCtx: ctx,\n\t\tData: &prrow.Data{\n\t\t\tPrimary:    prData,\n\t\t\tIsEnriched: true,\n\t\t\tEnriched: data.EnrichedPullRequestData{\n\t\t\t\tReviewRequests: prData.ReviewRequests,\n\t\t\t\tReviews:        prData.Reviews,\n\t\t\t},\n\t\t},\n\t}\n\tif width > 0 {\n\t\tm.width = width\n\t}\n\treturn m\n}\n\nfunc TestRenderRequestedReviewers(t *testing.T) {\n\ttestCases := map[string]struct {\n\t\treviewRequests []data.ReviewRequestNode\n\t\treviews        []data.Review\n\t\twantContains   []string\n\t\twantNotContain []string\n\t}{\n\t\t\"empty review requests\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews:        []data.Review{},\n\t\t\twantContains:   []string{},\n\t\t},\n\t\t\"single user awaiting review\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: false,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"alice\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews:      []data.Review{},\n\t\t\twantContains: []string{\"Reviewers\", \"@alice\", constants.DotIcon},\n\t\t},\n\t\t\"user who commented\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: false,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"bob\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"bob\"}, State: \"COMMENTED\"},\n\t\t\t},\n\t\t\twantContains:   []string{\"Reviewers\", \"@bob\", constants.CommentIcon},\n\t\t\twantNotContain: []string{constants.WaitingIcon},\n\t\t},\n\t\t\"code owner\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: true,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"charlie\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews:      []data.Review{},\n\t\t\twantContains: []string{\"Reviewers\", \"@charlie\", constants.OwnerIcon},\n\t\t},\n\t\t\"team reviewer\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: false,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tTeam: data.RequestedReviewerTeam{Slug: \"core-team\", Name: \"Core Team\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews:        []data.Review{},\n\t\t\twantContains:   []string{\"Reviewers\", \"core-team\"},\n\t\t\twantNotContain: []string{\"@core-team\", constants.TeamIcon},\n\t\t},\n\t\t\"user with bot in name but is code owner\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: true,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"mdn-bot\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews:      []data.Review{},\n\t\t\twantContains: []string{\"Reviewers\", \"@mdn-bot\", constants.OwnerIcon},\n\t\t},\n\t\t\"multiple reviewers\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: false,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"alice\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: true,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"bob\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews:      []data.Review{},\n\t\t\twantContains: []string{\"Reviewers\", \"@alice\", \"@bob\", \",\"},\n\t\t},\n\t\t\"reviewer who approved\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"alice\"}, State: \"APPROVED\"},\n\t\t\t},\n\t\t\twantContains: []string{\"Reviewers\", \"@alice\", constants.ApprovedIcon},\n\t\t},\n\t\t\"reviewer who requested changes\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"bob\"}, State: \"CHANGES_REQUESTED\"},\n\t\t\t},\n\t\t\twantContains: []string{\"Reviewers\", \"@bob\", constants.ChangesRequestedIcon},\n\t\t},\n\t\t\"reviewer who only commented\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"charlie\"}, State: \"COMMENTED\"},\n\t\t\t},\n\t\t\twantContains: []string{\"Reviewers\", \"@charlie\", constants.CommentIcon},\n\t\t},\n\t\t\"reviewer who approved then commented\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"alice\"}, State: \"APPROVED\"},\n\t\t\t\t{Author: struct{ Login string }{Login: \"alice\"}, State: \"COMMENTED\"},\n\t\t\t},\n\t\t\twantContains:   []string{\"Reviewers\", \"@alice\", constants.ApprovedIcon},\n\t\t\twantNotContain: []string{constants.CommentIcon},\n\t\t},\n\t\t\"reviewer who requested changes then commented\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"bob\"}, State: \"CHANGES_REQUESTED\"},\n\t\t\t\t{Author: struct{ Login string }{Login: \"bob\"}, State: \"COMMENTED\"},\n\t\t\t},\n\t\t\twantContains:   []string{\"Reviewers\", \"@bob\", constants.ChangesRequestedIcon},\n\t\t\twantNotContain: []string{constants.CommentIcon},\n\t\t},\n\t\t\"mix of pending and completed reviews\": {\n\t\t\treviewRequests: []data.ReviewRequestNode{\n\t\t\t\t{\n\t\t\t\t\tAsCodeOwner: false,\n\t\t\t\t\tRequestedReviewer: struct {\n\t\t\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t\t\t}{\n\t\t\t\t\t\tUser: data.RequestedReviewerUser{Login: \"alice\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\treviews: []data.Review{\n\t\t\t\t{Author: struct{ Login string }{Login: \"bob\"}, State: \"APPROVED\"},\n\t\t\t\t{Author: struct{ Login string }{Login: \"charlie\"}, State: \"CHANGES_REQUESTED\"},\n\t\t\t},\n\t\t\twantContains: []string{\n\t\t\t\t\"Reviewers\", \"@alice\", \"@bob\", \"@charlie\", constants.DotIcon,\n\t\t\t\tconstants.ApprovedIcon, constants.ChangesRequestedIcon,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor name, tc := range testCases {\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tprData := &data.PullRequestData{\n\t\t\t\tReviewRequests: data.ReviewRequests{\n\t\t\t\t\tTotalCount: len(tc.reviewRequests),\n\t\t\t\t\tNodes:      tc.reviewRequests,\n\t\t\t\t},\n\t\t\t\tReviews: data.Reviews{\n\t\t\t\t\tTotalCount: len(tc.reviews),\n\t\t\t\t\tNodes:      tc.reviews,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tm := newTestModel(t, prData)\n\t\t\tgot := ansi.Strip(m.renderRequestedReviewers())\n\n\t\t\tif len(tc.wantContains) == 0 {\n\t\t\t\trequire.Empty(t, got)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfor _, want := range tc.wantContains {\n\t\t\t\trequire.True(t, strings.Contains(got, want),\n\t\t\t\t\t\"expected output to contain %q, got: %q\", want, got)\n\t\t\t}\n\n\t\t\tfor _, notWant := range tc.wantNotContain {\n\t\t\t\trequire.False(t, strings.Contains(got, notWant),\n\t\t\t\t\t\"expected output to NOT contain %q, got: %q\", notWant, got)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestRenderRequestedReviewersWrapping(t *testing.T) {\n\t// Create multiple reviewers that would exceed a narrow width\n\treviewRequests := []data.ReviewRequestNode{}\n\tfor _, name := range []string{\"alice\", \"bob\", \"charlie\", \"david\", \"eve\"} {\n\t\treviewRequests = append(reviewRequests, data.ReviewRequestNode{\n\t\t\tAsCodeOwner: false,\n\t\t\tRequestedReviewer: struct {\n\t\t\t\tUser      data.RequestedReviewerUser      `graphql:\"... on User\"`\n\t\t\t\tTeam      data.RequestedReviewerTeam      `graphql:\"... on Team\"`\n\t\t\t\tBot       data.RequestedReviewerBot       `graphql:\"... on Bot\"`\n\t\t\t\tMannequin data.RequestedReviewerMannequin `graphql:\"... on Mannequin\"`\n\t\t\t}{\n\t\t\t\tUser: data.RequestedReviewerUser{Login: name},\n\t\t\t},\n\t\t})\n\t}\n\n\tprData := &data.PullRequestData{\n\t\tReviewRequests: data.ReviewRequests{\n\t\t\tTotalCount: len(reviewRequests),\n\t\t\tNodes:      reviewRequests,\n\t\t},\n\t\tReviews: data.Reviews{\n\t\t\tTotalCount: 0,\n\t\t\tNodes:      []data.Review{},\n\t\t},\n\t}\n\n\t// Use a narrow width to force wrapping\n\tm := newTestModelWithWidth(t, prData, 40)\n\tgot := ansi.Strip(m.renderRequestedReviewers())\n\n\t// Should contain all reviewers\n\tfor _, name := range []string{\"@alice\", \"@bob\", \"@charlie\", \"@david\", \"@eve\"} {\n\t\trequire.True(t, strings.Contains(got, name),\n\t\t\t\"expected output to contain %q, got: %q\", name, got)\n\t}\n\n\t// Count newlines in the reviewer list (after \"Reviewers\" title)\n\tlines := strings.Split(got, \"\\n\")\n\t// Should have: \"Reviewers\", empty line, then multiple lines of reviewers\n\trequire.Greater(t, len(lines), 3,\n\t\t\"expected output to wrap to multiple lines, got %d lines: %q\", len(lines), got)\n}\n\nfunc TestRenderRequestedReviewersLoading(t *testing.T) {\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.pr = &prrow.PullRequest{\n\t\tCtx: ctx,\n\t\tData: &prrow.Data{\n\t\t\tPrimary:    &data.PullRequestData{},\n\t\t\tIsEnriched: false, // Not yet enriched - should show loading\n\t\t},\n\t}\n\n\tgot := ansi.Strip(m.renderRequestedReviewers())\n\n\trequire.True(t, strings.Contains(got, \"Reviewers\"),\n\t\t\"expected output to contain 'Reviewers' title, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"Loading...\"),\n\t\t\"expected output to contain 'Loading...', got: %q\", got)\n}\n\nfunc TestRenderSuggestedReviewers(t *testing.T) {\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tthm := theme.ParseTheme(&cfg)\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tTheme:  thm,\n\t\tStyles: context.InitStyles(thm),\n\t}\n\n\tm := NewModel(ctx)\n\tm.ctx = ctx\n\tm.pr = &prrow.PullRequest{\n\t\tCtx: ctx,\n\t\tData: &prrow.Data{\n\t\t\tPrimary:    &data.PullRequestData{},\n\t\t\tIsEnriched: true,\n\t\t\tEnriched: data.EnrichedPullRequestData{\n\t\t\t\tReviewRequests: data.ReviewRequests{},\n\t\t\t\tReviews:        data.Reviews{},\n\t\t\t\tSuggestedReviewers: []data.SuggestedReviewer{\n\t\t\t\t\t{\n\t\t\t\t\t\tIsAuthor:    false,\n\t\t\t\t\t\tIsCommenter: false,\n\t\t\t\t\t\tReviewer:    struct{ Login string }{Login: \"codeowner1\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tIsAuthor:    true, // Should be skipped\n\t\t\t\t\t\tIsCommenter: false,\n\t\t\t\t\t\tReviewer:    struct{ Login string }{Login: \"author\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tgot := ansi.Strip(m.renderRequestedReviewers())\n\n\trequire.True(t, strings.Contains(got, \"Reviewers\"),\n\t\t\"expected output to contain 'Reviewers' title, got: %q\", got)\n\trequire.True(t, strings.Contains(got, \"@codeowner1\"),\n\t\t\"expected output to contain suggested reviewer '@codeowner1', got: %q\", got)\n\trequire.True(t, strings.Contains(got, constants.OwnerIcon),\n\t\t\"expected output to contain owner icon for suggested reviewer, got: %q\", got)\n\trequire.False(t, strings.Contains(got, \"@author\"),\n\t\t\"expected output to NOT contain '@author' (PR author), got: %q\", got)\n}\n"
  },
  {
    "path": "internal/tui/components/reposection/commands.go",
    "content": "package reposection\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/log/v2\"\n\tgitm \"github.com/aymanbagabas/git-module\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype UpdatePRMsg struct {\n\tPrNumber         int\n\tIsClosed         *bool\n\tNewComment       *data.Comment\n\tReadyForReview   *bool\n\tIsMerged         *bool\n\tAddedAssignees   *data.Assignees\n\tRemovedAssignees *data.Assignees\n}\n\nfunc (m *Model) fastForward() (tea.Cmd, error) {\n\tb := m.getCurrBranch()\n\n\ttaskId := fmt.Sprintf(\"fast-forward_%s_%d\", b.Data.Name, time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Fast-forwarding branch %s\", b.Data.Name),\n\t\tFinishedText: fmt.Sprintf(\"Branch %s has been fast-forwarded\", b.Data.Name),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tvar err error\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\tif b.Data.IsCheckedOut {\n\t\t\terr = repo.Pull(gitm.PullOptions{\n\t\t\t\tAll:            false,\n\t\t\t\tRemote:         \"origin\",\n\t\t\t\tBranch:         b.Data.Name,\n\t\t\t\tCommandOptions: gitm.CommandOptions{Args: []string{\"--ff-only\", \"--no-edit\"}},\n\t\t\t})\n\t\t} else {\n\t\t\terr = repo.Fetch(gitm.FetchOptions{CommandOptions: gitm.CommandOptions{Args: []string{\n\t\t\t\t\"--no-write-fetch-head\",\n\t\t\t\t\"origin\",\n\t\t\t\tb.Data.Name + \":\" + b.Data.Name,\n\t\t\t}}})\n\t\t}\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\t\trepo, err = git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t}), nil\n}\n\ntype pushOptions struct {\n\tforce bool\n}\n\nfunc (m *Model) push(opts pushOptions) (tea.Cmd, error) {\n\tb := m.getCurrBranch()\n\n\ttaskId := fmt.Sprintf(\"push_%s_%d\", b.Data.Name, time.Now().Unix())\n\twithForceText := func() string {\n\t\tif opts.force {\n\t\t\treturn \" with force\"\n\t\t}\n\t\treturn \"\"\n\t}\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Pushing branch %s%s\", b.Data.Name, withForceText()),\n\t\tFinishedText: fmt.Sprintf(\"Branch %s has been pushed%s\", b.Data.Name, withForceText()),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tvar err error\n\t\targs := []string{}\n\t\tif opts.force {\n\t\t\targs = append(args, \"--force\")\n\t\t}\n\t\tif len(b.Data.Remotes) == 0 {\n\t\t\targs = append(args, \"--set-upstream\")\n\t\t\terr = gitm.Push(\n\t\t\t\tm.Ctx.RepoPath,\n\t\t\t\t\"origin\",\n\t\t\t\tb.Data.Name,\n\t\t\t\tgitm.PushOptions{CommandOptions: gitm.CommandOptions{Args: args}},\n\t\t\t)\n\t\t} else {\n\t\t\terr = gitm.Push(\n\t\t\t\tm.Ctx.RepoPath,\n\t\t\t\tb.Data.Remotes[0],\n\t\t\t\tb.Data.Name,\n\t\t\t\tgitm.PushOptions{CommandOptions: gitm.CommandOptions{Args: args}},\n\t\t\t)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t}), nil\n}\n\nfunc (m *Model) checkout() (tea.Cmd, error) {\n\tb := m.getCurrBranch()\n\n\ttaskId := fmt.Sprintf(\"checkout_%s_%d\", b.Data.Name, time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Checking out branch %s\", b.Data.Name),\n\t\tFinishedText: fmt.Sprintf(\"Branch %s has been checked out\", b.Data.Name),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := gitm.Checkout(m.Ctx.RepoPath, b.Data.Name)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg:         repoMsg{repo: repo, resetSelection: true},\n\t\t\tErr:         err,\n\t\t}\n\t}), nil\n}\n\ntype repoMsg struct {\n\trepo           *git.Repo\n\tresetSelection bool\n}\n\nfunc (m *Model) readRepoCmd() []tea.Cmd {\n\tcmds := make([]tea.Cmd, 0)\n\tbranchesTaskId := fmt.Sprintf(\"fetching_branches_%d\", time.Now().Unix())\n\tif m.Ctx.RepoPath != \"\" {\n\t\tbranchesTask := context.Task{\n\t\t\tId:           branchesTaskId,\n\t\t\tStartText:    \"Reading local branches\",\n\t\t\tFinishedText: \"Branches read\",\n\t\t\tState:        context.TaskStart,\n\t\t\tError:        nil,\n\t\t}\n\t\tbCmd := m.Ctx.StartTask(branchesTask)\n\t\tcmds = append(cmds, bCmd)\n\t}\n\tcmds = append(cmds, func() tea.Msg {\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: branchesTaskId, Err: err}\n\t\t}\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      branchesTaskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t})\n\treturn cmds\n}\n\nfunc (m *Model) fetchRepoCmd() []tea.Cmd {\n\tcmds := make([]tea.Cmd, 0)\n\tfetchTaskId := fmt.Sprintf(\"git_fetch_repo_%d\", time.Now().Unix())\n\tif m.Ctx.RepoPath == \"\" {\n\t\treturn []tea.Cmd{}\n\t}\n\tfetchTask := context.Task{\n\t\tId:           fetchTaskId,\n\t\tStartText:    \"Fetching branches from origin\",\n\t\tFinishedText: \"Fetched origin branches\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tcmds = append(cmds, m.Ctx.StartTask(fetchTask))\n\tcmds = append(cmds, func() tea.Msg {\n\t\trepo, err := git.FetchRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: fetchTaskId, Err: err}\n\t\t}\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      fetchTaskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t})\n\treturn cmds\n}\n\nfunc (m *Model) fetchPRsCmd() tea.Cmd {\n\tprsTaskId := fmt.Sprintf(\"fetching_pr_branches_%d\", time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           prsTaskId,\n\t\tStartText:    \"Fetching PRs\",\n\t\tFinishedText: \"PRs fetched\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tlimit := m.Config.Limit\n\t\tif limit == nil {\n\t\t\tlimit = &m.Ctx.Config.Defaults.PrsLimit\n\t\t}\n\t\tres, err := data.FetchPullRequests(\n\t\t\tfmt.Sprintf(\"author:@me repo:%s\", git.GetRepoShortName(m.Ctx.RepoUrl)),\n\t\t\t*limit,\n\t\t\tnil,\n\t\t)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   0,\n\t\t\t\tSectionType: SectionType,\n\t\t\t\tTaskId:      prsTaskId,\n\t\t\t\tErr:         err,\n\t\t\t}\n\t\t}\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      prsTaskId,\n\t\t\tMsg: SectionPullRequestsFetchedMsg{\n\t\t\t\tPrs:        res.Prs,\n\t\t\t\tTotalCount: res.TotalCount,\n\t\t\t\tPageInfo:   res.PageInfo,\n\t\t\t\tTaskId:     prsTaskId,\n\t\t\t},\n\t\t}\n\t})\n}\n\nfunc (m *Model) fetchPRCmd(branch string) []tea.Cmd {\n\tprsTaskId := fmt.Sprintf(\"fetching_pr_for_branch_%s_%d\", branch, time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           prsTaskId,\n\t\tStartText:    fmt.Sprintf(\"Fetching PR for branch %s\", branch),\n\t\tFinishedText: \"PR fetched\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn []tea.Cmd{startCmd, func() tea.Msg {\n\t\tres, err := data.FetchPullRequests(\n\t\t\tfmt.Sprintf(\"author:@me repo:%s head:%s\", git.GetRepoShortName(m.Ctx.RepoUrl), branch),\n\t\t\t1,\n\t\t\tnil,\n\t\t)\n\t\tlog.Debug(\"Fetching PRs\", \"res\", res)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   0,\n\t\t\t\tSectionType: SectionType,\n\t\t\t\tTaskId:      prsTaskId,\n\t\t\t\tErr:         err,\n\t\t\t}\n\t\t}\n\n\t\tif len(res.Prs) != 1 {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tSectionId:   0,\n\t\t\t\tSectionType: SectionType,\n\t\t\t\tTaskId:      prsTaskId,\n\t\t\t\tErr:         fmt.Errorf(\"expected 1 PR, got %d\", len(res.Prs)),\n\t\t\t}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      prsTaskId,\n\t\t\tMsg: tasks.UpdateBranchMsg{\n\t\t\t\tName:  branch,\n\t\t\t\tNewPr: &res.Prs[0],\n\t\t\t},\n\t\t}\n\t}}\n}\n\ntype RefreshBranchesMsg struct {\n\tid   int\n\ttime time.Time\n}\n\ntype RefreshPrsMsg struct {\n\tid   int\n\ttime time.Time\n}\n\nvar (\n\tlastID int\n\tidMtx  sync.Mutex\n)\n\n// Return the next ID we should use on the Model.\nfunc nextID() int {\n\tidMtx.Lock()\n\tdefer idMtx.Unlock()\n\tlastID++\n\treturn lastID\n}\n\nfunc (m *Model) tickRefreshBranchesCmd() tea.Cmd {\n\treturn tea.Tick(\n\t\ttime.Second*time.Duration(m.Ctx.Config.Repo.BranchesRefetchIntervalSeconds),\n\t\tfunc(t time.Time) tea.Msg {\n\t\t\treturn RefreshBranchesMsg{id: m.refreshId, time: t}\n\t\t},\n\t)\n}\n\nfunc (m *Model) tickFetchPrsCmd() tea.Cmd {\n\treturn tea.Tick(\n\t\ttime.Second*time.Duration(m.Ctx.Config.Repo.PrsRefetchIntervalSeconds),\n\t\tfunc(t time.Time) tea.Msg {\n\t\t\treturn RefreshPrsMsg{id: m.refreshId, time: t}\n\t\t},\n\t)\n}\n\nfunc (m *Model) onRefreshBranchesMsg() []tea.Cmd {\n\tcmds := make([]tea.Cmd, 0)\n\tcmds = append(cmds, m.readRepoCmd()...)\n\tcmds = append(cmds, m.tickRefreshBranchesCmd())\n\treturn cmds\n}\n\nfunc (m *Model) onRefreshPrsMsg() []tea.Cmd {\n\tcmds := make([]tea.Cmd, 0)\n\tcmds = append(cmds, m.fetchRepoCmd()...)\n\tcmds = append(cmds, m.tickFetchPrsCmd())\n\treturn cmds\n}\n\nfunc (m *Model) OpenGithub() tea.Cmd {\n\trow := m.CurrRow()\n\tb := m.getFilteredBranches()[row]\n\treturn tasks.OpenBranchPR(m.Ctx, tasks.SectionIdentifier{Id: 0, Type: SectionType}, b.Data.Name)\n}\n\nfunc (m *Model) deleteBranch() tea.Cmd {\n\tb := m.getCurrBranch()\n\n\ttaskId := fmt.Sprintf(\"delete_%s_%d\", b.Data.Name, time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Deleting branch %s\", b.Data.Name),\n\t\tFinishedText: fmt.Sprintf(\"Branch %s has been deleted\", b.Data.Name),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := gitm.DeleteBranch(m.Ctx.RepoPath, b.Data.Name, gitm.DeleteBranchOptions{Force: true})\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t})\n}\n\nfunc (m *Model) newBranch(name string) tea.Cmd {\n\ttaskId := fmt.Sprintf(\"create_branch_%s_%d\", name, time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Creating branch %s\", name),\n\t\tFinishedText: fmt.Sprintf(\"Branch %s has been created\", name),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.Ctx.StartTask(task)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\terr := gitm.Checkout(\n\t\t\tm.Ctx.RepoPath,\n\t\t\tname,\n\t\t\tgitm.CheckoutOptions{BaseBranch: m.repo.HeadBranchName},\n\t\t)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\t\trepo, err := git.GetRepo(m.Ctx.RepoPath)\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   0,\n\t\t\tSectionType: SectionType,\n\t\t\tTaskId:      taskId,\n\t\t\tMsg:         repoMsg{repo: repo},\n\t\t\tErr:         err,\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/tui/components/reposection/reposection.go",
    "content": "package reposection\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/key\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branch\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/search\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\nconst SectionType = \"repo\"\n\ntype Model struct {\n\tsection.BaseModel\n\trepo           *git.Repo\n\tBranches       []branch.Branch\n\tPrs            []data.PullRequestData\n\tisRefreshSetUp bool\n\trefreshId      int\n}\n\nfunc NewModel(\n\tid int,\n\tctx *context.ProgramContext,\n\tcfg config.PrsSectionConfig,\n\tlastUpdated time.Time,\n) Model {\n\tm := Model{}\n\tm.BaseModel = section.NewModel(\n\t\tctx,\n\t\tsection.NewSectionOptions{\n\t\t\tId:          id,\n\t\t\tConfig:      cfg.ToSectionConfig(),\n\t\t\tType:        SectionType,\n\t\t\tColumns:     GetSectionColumns(ctx, cfg),\n\t\t\tSingular:    \"branch\",\n\t\t\tPlural:      \"branches\",\n\t\t\tLastUpdated: lastUpdated,\n\t\t},\n\t)\n\tm.SearchBar = search.NewModel(ctx, search.SearchOptions{Placeholder: \"Search branches...\"})\n\tm.SearchValue = \"\"\n\tm.repo = &git.Repo{Branches: []git.Branch{}}\n\tm.Branches = []branch.Branch{}\n\tm.Prs = []data.PullRequestData{}\n\tm.isRefreshSetUp = false\n\n\treturn m\n}\n\nfunc (m *Model) Update(msg tea.Msg) (section.Section, tea.Cmd) {\n\tvar cmd tea.Cmd\n\tcmds := make([]tea.Cmd, 0)\n\tvar err error\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\n\t\tif m.IsSearchFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.SearchBar.SetValue(m.SearchValue)\n\t\t\t\tblinkCmd := m.SetIsSearching(false)\n\t\t\t\treturn m, blinkCmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tm.Table.ResetCurrItem()\n\t\t\t\tm.SetIsSearching(false)\n\t\t\t\tm.SearchValue = m.SearchBar.Value()\n\t\t\t\tm.BuildRows()\n\t\t\t\treturn m, nil\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tif m.IsPromptConfirmationFocused() {\n\t\t\tswitch msg.String() {\n\t\t\tcase \"ctrl+c\", \"esc\":\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tcmd = m.SetIsPromptConfirmationShown(false)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase \"enter\":\n\t\t\t\tinput := m.PromptConfirmationBox.Value()\n\t\t\t\taction := m.GetPromptConfirmationAction()\n\t\t\t\tbranch := m.getCurrBranch().Data.Name\n\t\t\t\tsid := tasks.SectionIdentifier{Id: m.Id, Type: SectionType}\n\t\t\t\tswitch action {\n\t\t\t\tcase \"new\":\n\t\t\t\t\tcmd = m.newBranch(input)\n\t\t\t\tcase \"create_pr\":\n\t\t\t\t\tcmd = tasks.CreatePR(m.Ctx, sid, branch, input)\n\t\t\t\tdefault:\n\t\t\t\t\tpr := findPRForRef(m.Prs, branch)\n\t\t\t\t\tif input == \"\" || input == \"Y\" || input == \"y\" {\n\t\t\t\t\t\tswitch action {\n\t\t\t\t\t\tcase \"delete\":\n\t\t\t\t\t\t\tcmd = m.deleteBranch()\n\t\t\t\t\t\tcase \"close\":\n\t\t\t\t\t\t\tcmd = tasks.ClosePR(m.Ctx, sid, pr)\n\t\t\t\t\t\tcase \"reopen\":\n\t\t\t\t\t\t\tcmd = tasks.ReopenPR(m.Ctx, sid, pr)\n\t\t\t\t\t\tcase \"ready\":\n\t\t\t\t\t\t\tcmd = tasks.PRReady(m.Ctx, sid, pr)\n\t\t\t\t\t\tcase \"merge\":\n\t\t\t\t\t\t\tcmd = tasks.MergePR(m.Ctx, sid, pr)\n\t\t\t\t\t\tcase \"update\":\n\t\t\t\t\t\t\tcmd = tasks.UpdatePR(m.Ctx, sid, pr)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.PromptConfirmationBox.Reset()\n\t\t\t\tblinkCmd := m.SetIsPromptConfirmationShown(false)\n\n\t\t\t\treturn m, tea.Batch(cmd, blinkCmd)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tswitch {\n\t\tcase key.Matches(msg, keys.BranchKeys.Checkout):\n\t\t\tcmd, err = m.checkout()\n\t\t\tif err != nil {\n\t\t\t\tm.Ctx.Error = err\n\t\t\t}\n\n\t\tcase key.Matches(msg, keys.BranchKeys.Push):\n\t\t\tcmd, err = m.push(pushOptions{force: false})\n\t\t\tif err != nil {\n\t\t\t\tm.Ctx.Error = err\n\t\t\t}\n\t\tcase key.Matches(msg, keys.BranchKeys.ForcePush):\n\t\t\tcmd, err = m.push(pushOptions{force: true})\n\t\t\tif err != nil {\n\t\t\t\tm.Ctx.Error = err\n\t\t\t}\n\t\tcase key.Matches(msg, keys.BranchKeys.FastForward):\n\t\t\tcmd, err = m.fastForward()\n\t\t\tif err != nil {\n\t\t\t\tm.Ctx.Error = err\n\t\t\t}\n\t\t}\n\n\tcase tasks.UpdateBranchMsg:\n\t\tif msg.IsCreated != nil && *msg.IsCreated {\n\t\t\tcmds = append(cmds, m.fetchPRCmd(msg.Name)...)\n\t\t}\n\t\tif msg.NewPr != nil {\n\t\t\tm.Prs = append(m.Prs, *msg.NewPr)\n\t\t}\n\n\tcase repoMsg:\n\t\tm.repo = msg.repo\n\t\tm.SetIsLoading(false)\n\t\tm.Table.SetRows(m.BuildRows())\n\t\tif msg.resetSelection {\n\t\t\tm.Table.ResetCurrItem()\n\t\t}\n\n\tcase SectionPullRequestsFetchedMsg:\n\t\tm.Prs = msg.Prs\n\n\tcase RefreshBranchesMsg:\n\t\tif msg.id == m.refreshId {\n\t\t\tcmds = append(cmds, m.onRefreshBranchesMsg()...)\n\t\t}\n\n\tcase RefreshPrsMsg:\n\t\tif msg.id == m.refreshId {\n\t\t\tcmds = append(cmds, m.onRefreshPrsMsg()...)\n\t\t}\n\t}\n\n\tm.updateBranchesWithPrs()\n\n\tcmds = append(cmds, cmd)\n\n\tsearch, searchCmd := m.SearchBar.Update(msg)\n\tcmds = append(cmds, searchCmd)\n\tm.SearchBar = search\n\n\tprompt, promptCmd := m.PromptConfirmationBox.Update(msg)\n\tcmds = append(cmds, promptCmd)\n\tm.PromptConfirmationBox = prompt\n\n\tm.Table.SetRows(m.BuildRows())\n\n\tm.Table.SetRows(m.BuildRows())\n\ttable, tableCmd := m.Table.Update(msg)\n\tm.Table = table\n\tcmds = append(cmds, tableCmd)\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m *Model) View() string {\n\tview := \"\"\n\tif m.Table.Rows == nil {\n\t\td := m.GetDimensions()\n\t\tview = lipgloss.Place(\n\t\t\td.Width,\n\t\t\td.Height,\n\t\t\tlipgloss.Center,\n\t\t\tlipgloss.Center,\n\t\t\t\"No local branches\",\n\t\t)\n\t} else {\n\t\tview = m.Table.View()\n\t}\n\n\treturn m.Ctx.Styles.Section.ContainerStyle.Render(\n\t\tlipgloss.JoinVertical(lipgloss.Left, m.SearchBar.View(m.Ctx), view),\n\t)\n}\n\nfunc GetSectionColumns(\n\tctx *context.ProgramContext,\n\tcfg config.PrsSectionConfig,\n) []table.Column {\n\tdLayout := ctx.Config.Defaults.Layout.Prs\n\tsLayout := cfg.Layout\n\n\tupdatedAtLayout := config.MergeColumnConfigs(\n\t\tdLayout.UpdatedAt,\n\t\tsLayout.UpdatedAt,\n\t)\n\trepoLayout := config.MergeColumnConfigs(dLayout.Repo, sLayout.Repo)\n\ttitleLayout := config.MergeColumnConfigs(dLayout.Title, sLayout.Title)\n\tauthorLayout := config.MergeColumnConfigs(dLayout.Author, sLayout.Author)\n\tassigneesLayout := config.MergeColumnConfigs(\n\t\tdLayout.Assignees,\n\t\tsLayout.Assignees,\n\t)\n\tbaseLayout := config.MergeColumnConfigs(dLayout.Base, sLayout.Base)\n\treviewStatusLayout := config.MergeColumnConfigs(\n\t\tdLayout.ReviewStatus,\n\t\tsLayout.ReviewStatus,\n\t)\n\tstateLayout := config.MergeColumnConfigs(dLayout.State, sLayout.State)\n\tciLayout := config.MergeColumnConfigs(dLayout.Ci, sLayout.Ci)\n\tlinesLayout := config.MergeColumnConfigs(dLayout.Lines, sLayout.Lines)\n\n\tif !ctx.Config.Theme.Ui.Table.Compact {\n\t\treturn []table.Column{\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  utils.IntPtr(3),\n\t\t\t\tHidden: stateLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Title\",\n\t\t\t\tGrow:   utils.BoolPtr(true),\n\t\t\t\tHidden: titleLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Assignees\",\n\t\t\t\tWidth:  assigneesLayout.Width,\n\t\t\t\tHidden: assigneesLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"Base\",\n\t\t\t\tWidth:  baseLayout.Width,\n\t\t\t\tHidden: baseLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"󰯢\",\n\t\t\t\tWidth:  utils.IntPtr(4),\n\t\t\t\tHidden: reviewStatusLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  &ctx.Styles.PrSection.CiCellWidth,\n\t\t\t\tGrow:   new(bool),\n\t\t\t\tHidden: ciLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  linesLayout.Width,\n\t\t\t\tHidden: linesLayout.Hidden,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTitle:  \"\",\n\t\t\t\tWidth:  updatedAtLayout.Width,\n\t\t\t\tHidden: updatedAtLayout.Hidden,\n\t\t\t},\n\t\t}\n\t}\n\n\treturn []table.Column{\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  utils.IntPtr(3),\n\t\t\tHidden: stateLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  repoLayout.Width,\n\t\t\tHidden: repoLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Title\",\n\t\t\tGrow:   utils.BoolPtr(true),\n\t\t\tHidden: titleLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Author\",\n\t\t\tWidth:  authorLayout.Width,\n\t\t\tHidden: authorLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Assignees\",\n\t\t\tWidth:  assigneesLayout.Width,\n\t\t\tHidden: assigneesLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"Base\",\n\t\t\tWidth:  baseLayout.Width,\n\t\t\tHidden: baseLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"󰯢\",\n\t\t\tWidth:  utils.IntPtr(4),\n\t\t\tHidden: reviewStatusLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  &ctx.Styles.PrSection.CiCellWidth,\n\t\t\tGrow:   new(bool),\n\t\t\tHidden: ciLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  linesLayout.Width,\n\t\t\tHidden: linesLayout.Hidden,\n\t\t},\n\t\t{\n\t\t\tTitle:  \"\",\n\t\t\tWidth:  updatedAtLayout.Width,\n\t\t\tHidden: updatedAtLayout.Hidden,\n\t\t},\n\t}\n}\n\nfunc (m *Model) updateBranchesWithPrs() {\n\tbranches := make([]branch.Branch, 0)\n\tfor _, ref := range m.repo.Branches {\n\t\tb := branch.Branch{Ctx: m.Ctx, Data: ref, Columns: m.Table.Columns}\n\t\tb.PR = findPRForRef(m.Prs, ref.Name)\n\n\t\tbranches = append(branches, b)\n\t}\n\n\tslices.SortFunc(branches, func(a, b branch.Branch) int {\n\t\tif a.Data.IsCheckedOut {\n\t\t\treturn -1\n\t\t}\n\t\tif a.Data.LastUpdatedAt != nil && b.Data.LastUpdatedAt != nil {\n\t\t\treturn b.Data.LastUpdatedAt.Compare(*a.Data.LastUpdatedAt)\n\t\t}\n\t\tif a.Data.LastUpdatedAt != nil {\n\t\t\treturn -1\n\t\t}\n\t\tif b.Data.LastUpdatedAt != nil {\n\t\t\treturn 1\n\t\t}\n\t\treturn strings.Compare(a.Data.Name, b.Data.Name)\n\t})\n\tm.Branches = branches\n}\n\nfunc (m Model) BuildRows() []table.Row {\n\tvar rows []table.Row\n\tcurrItem := m.Table.GetCurrItem()\n\n\tfiltered := m.getFilteredBranches()\n\n\tfor i, b := range filtered {\n\t\tif strings.Contains(b.Data.Name, m.SearchValue) {\n\t\t\trows = append(\n\t\t\t\trows,\n\t\t\t\tb.ToTableRow(currItem == i),\n\t\t\t)\n\t\t}\n\t}\n\n\tif rows == nil {\n\t\trows = []table.Row{}\n\t}\n\n\treturn rows\n}\n\nfunc (m *Model) getFilteredBranches() []branch.Branch {\n\tsorted := m.Branches\n\tfiltered := make([]branch.Branch, 0)\n\tfor _, b := range sorted {\n\t\tif strings.Contains(b.Data.Name, m.SearchValue) {\n\t\t\tfiltered = append(filtered, b)\n\t\t}\n\t}\n\treturn filtered\n}\n\nfunc findPRForRef(prs []data.PullRequestData, branch string) *data.PullRequestData {\n\tfor _, pr := range prs {\n\t\tif pr.HeadRefName == branch {\n\t\t\treturn &pr\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m *Model) NumRows() int {\n\treturn len(m.repo.Branches)\n}\n\ntype SectionPullRequestsFetchedMsg struct {\n\tPrs        []data.PullRequestData\n\tTotalCount int\n\tPageInfo   data.PageInfo\n\tTaskId     string\n}\n\nfunc (m *Model) getCurrBranch() *branch.Branch {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.Branches) {\n\t\treturn nil\n\t}\n\treturn &m.Branches[idx]\n}\n\nfunc (m *Model) GetCurrRow() data.RowData {\n\tidx := m.Table.GetCurrItem()\n\tif idx < 0 || idx >= len(m.repo.Branches) {\n\t\treturn nil\n\t}\n\tb := m.repo.Branches[idx]\n\tpr := findPRForRef(m.Prs, b.Name)\n\treturn branch.BranchData{\n\t\tData: b,\n\t\tPR:   pr,\n\t}\n}\n\nfunc (m *Model) FetchNextPageSectionRows() []tea.Cmd {\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\tvar cmds []tea.Cmd\n\tif m.Ctx.RepoPath != \"\" {\n\t\tcmds = append(cmds, m.readRepoCmd()...)\n\t\tcmds = append(cmds, m.fetchRepoCmd()...)\n\t\tcmds = append(cmds, m.fetchPRsCmd())\n\t}\n\n\treturn cmds\n}\n\nfunc FetchAllBranches(ctx *context.ProgramContext) (Model, tea.Cmd) {\n\tcmds := make([]tea.Cmd, 0)\n\n\tt := config.RepoView\n\tcfg := config.PrsSectionConfig{\n\t\tTitle: \"Local Branches\",\n\t\tType:  &t,\n\t}\n\tm := NewModel(\n\t\t0,\n\t\tctx,\n\t\tcfg,\n\t\ttime.Now(),\n\t)\n\tm.refreshId = nextID()\n\n\tif ctx.RepoPath != \"\" {\n\t\tcmds = append(cmds, m.readRepoCmd()...)\n\t\tcmds = append(cmds, m.fetchRepoCmd()...)\n\t\tcmds = append(cmds, m.fetchPRsCmd())\n\t}\n\n\tif !m.isRefreshSetUp {\n\t\tm.isRefreshSetUp = true\n\t\tcmds = append(cmds, m.tickRefreshBranchesCmd())\n\t\tcmds = append(cmds, m.tickFetchPrsCmd())\n\t}\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m Model) GetDimensions() constants.Dimensions {\n\tif m.Ctx == nil {\n\t\treturn constants.Dimensions{}\n\t}\n\treturn constants.Dimensions{\n\t\tWidth:  m.Ctx.MainContentWidth - m.Ctx.Styles.Section.ContainerStyle.GetHorizontalPadding(),\n\t\tHeight: m.Ctx.MainContentHeight - common.SearchHeight,\n\t}\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.Ctx = ctx\n\tnewDimensions := m.GetDimensions()\n\ttableDimensions := constants.Dimensions{\n\t\tHeight: newDimensions.Height,\n\t\tWidth:  newDimensions.Width,\n\t}\n\tm.Table.SetDimensions(tableDimensions)\n\tm.Table.UpdateProgramContext(ctx)\n\tm.Table.SyncViewPortContent()\n\tm.SearchBar.UpdateProgramContext(ctx)\n}\n\nfunc (m *Model) ResetRows() {\n\tm.Prs = nil\n}\n\nfunc (m *Model) GetItemSingularForm() string {\n\treturn \"Branch\"\n}\n\nfunc (m *Model) GetItemPluralForm() string {\n\treturn \"Branches\"\n}\n\nfunc (m *Model) GetTotalCount() int {\n\treturn len(m.Branches)\n}\n\nfunc (m *Model) SetIsLoading(val bool) {\n\tm.IsLoading = val\n\tm.Table.SetIsLoading(val)\n}\n\nfunc (m *Model) GetPagerContent() string {\n\ts := lipgloss.NewStyle().Background(m.Ctx.Styles.ListViewPort.PagerStyle.GetBackground())\n\tmod := s.Foreground(lipgloss.Color(\"#e0af68\")).Render(\n\t\tfmt.Sprintf(\" %d\", len(m.repo.Status.Modified)))\n\tplus := s.Foreground(m.Ctx.Theme.SuccessText).Render(\n\t\tfmt.Sprintf(\" %d\", len(m.repo.Status.Added)))\n\tminus := s.Foreground(m.Ctx.Theme.ErrorText).Render(\n\t\tfmt.Sprintf(\" %d\", len(m.repo.Status.Removed)))\n\tspacer := s.Render(\" \")\n\treturn m.Ctx.Styles.ListViewPort.PagerStyle.Render(\n\t\tlipgloss.JoinHorizontal(lipgloss.Top, plus, spacer, minus, spacer, mod))\n}\n"
  },
  {
    "path": "internal/tui/components/search/search.go",
    "content": "package search\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/textinput\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx          *context.ProgramContext\n\tinitialValue string\n\ttextInput    textinput.Model\n}\n\ntype SearchOptions struct {\n\tPrefix       string\n\tInitialValue string\n\tPlaceholder  string\n}\n\nfunc NewModel(ctx *context.ProgramContext, opts SearchOptions) Model {\n\tprompt := fmt.Sprintf(\" %s \", opts.Prefix)\n\tti := textinput.New()\n\tti.Placeholder = opts.Placeholder\n\tbase := lipgloss.NewStyle()\n\tti.SetStyles(textinput.Styles{\n\t\tFocused: textinput.StyleState{\n\t\t\tPlaceholder: lipgloss.NewStyle().Foreground(ctx.Theme.FaintText),\n\t\t\tPrompt:      base.Foreground(ctx.Theme.SecondaryText),\n\t\t\tText:        base.Foreground(ctx.Theme.PrimaryText),\n\t\t},\n\t\tBlurred: textinput.StyleState{\n\t\t\tPlaceholder: lipgloss.NewStyle().Foreground(ctx.Theme.FaintText),\n\t\t\tPrompt:      base.Foreground(ctx.Theme.SecondaryText),\n\t\t\tText:        lipgloss.NewStyle().Foreground(ctx.Theme.FaintText),\n\t\t},\n\t\tCursor: textinput.CursorStyle{\n\t\t\tColor: ctx.Theme.FaintText,\n\t\t\tShape: tea.CursorBar,\n\t\t\tBlink: true,\n\t\t},\n\t})\n\tti.Prompt = prompt\n\tti.Blur()\n\tti.SetValue(opts.InitialValue)\n\tti.CursorStart()\n\tm := Model{\n\t\tctx:          ctx,\n\t\ttextInput:    ti,\n\t\tinitialValue: opts.InitialValue,\n\t}\n\n\tw := m.getInputWidth(m.ctx)\n\tm.textInput.SetWidth(w)\n\n\treturn m\n}\n\nfunc (m Model) Init() tea.Cmd {\n\treturn textinput.Blink\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tvar cmd tea.Cmd\n\n\tm.textInput, cmd = m.textInput.Update(msg)\n\treturn m, cmd\n}\n\nfunc (m Model) View(ctx *context.ProgramContext) string {\n\treturn lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder()).\n\t\tBorderForeground(m.ctx.Theme.PrimaryBorder).\n\t\tRender(m.textInput.View())\n}\n\nfunc (m *Model) Focus() tea.Cmd {\n\tm.textInput.CursorEnd()\n\treturn m.textInput.Focus()\n}\n\nfunc (m *Model) Blur() {\n\tm.textInput.CursorStart()\n\tm.textInput.Blur()\n}\n\nfunc (m *Model) SetValue(val string) {\n\tm.textInput.SetValue(val)\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\toldWidth := m.textInput.Width()\n\tnewWidth := m.getInputWidth(ctx)\n\tm.textInput.SetWidth(newWidth)\n\tif m.textInput.Width() != oldWidth {\n\t\tm.textInput.CursorEnd()\n\t}\n}\n\nfunc (m *Model) getInputWidth(ctx *context.ProgramContext) int {\n\t// leave space for at least 2 characters - one character of the input and 1 for the cursor\n\t// - deduce 4 - 2 for the padding, 2 for the borders\n\t// - deduce 1 for the cursor\n\t// - deduce 1 for the spacing between the prompt and text\n\treturn max(\n\t\t2,\n\t\tctx.MainContentWidth-lipgloss.Width(m.textInput.Prompt)-4-1-1,\n\t) // borders + cursor\n}\n\nfunc (m Model) Value() string {\n\treturn m.textInput.Value()\n}\n"
  },
  {
    "path": "internal/tui/components/section/section.go",
    "content": "package section\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"strings\"\n\t\"text/template\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/spinner\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/log/v2\"\n\t\"github.com/cli/go-gh/v2/pkg/repository\"\n\t\"github.com/go-sprout/sprout\"\n\ttimeregistry \"github.com/go-sprout/sprout/registry/time\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prompt\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/search\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype BaseModel struct {\n\tId                        int\n\tConfig                    config.SectionConfig\n\tCtx                       *context.ProgramContext\n\tSpinner                   spinner.Model\n\tSearchBar                 search.Model\n\tIsSearching               bool\n\tSearchValue               string\n\tTable                     table.Model\n\tType                      string\n\tSingularForm              string\n\tPluralForm                string\n\tColumns                   []table.Column\n\tTotalCount                int\n\tPageInfo                  *data.PageInfo\n\tPromptConfirmationBox     prompt.Model\n\tIsPromptConfirmationShown bool\n\tPromptConfirmationAction  string\n\tLastFetchTaskId           string\n\tIsSearchSupported         bool\n\tShowAuthorIcon            bool\n\tIsFilteredByCurrentRemote bool\n\tIsLoading                 bool\n}\n\ntype NewSectionOptions struct {\n\tId          int\n\tConfig      config.SectionConfig\n\tCtx         *context.ProgramContext\n\tType        string\n\tColumns     []table.Column\n\tSingular    string\n\tPlural      string\n\tLastUpdated time.Time\n\tCreatedAt   time.Time\n}\n\nfunc (options NewSectionOptions) GetConfigFiltersWithCurrentRemoteAdded(\n\tctx *context.ProgramContext,\n) string {\n\tsearchValue := options.Config.Filters\n\tif !ctx.Config.SmartFilteringAtLaunch {\n\t\treturn searchValue\n\t}\n\trepo, err := repository.Current()\n\tif err != nil {\n\t\treturn searchValue\n\t}\n\tfor token := range strings.FieldsSeq(searchValue) {\n\t\tif strings.HasPrefix(token, \"repo:\") {\n\t\t\treturn searchValue\n\t\t}\n\t}\n\treturn fmt.Sprintf(\"repo:%s/%s %s\", repo.Owner, repo.Name, searchValue)\n}\n\nfunc NewModel(\n\tctx *context.ProgramContext,\n\toptions NewSectionOptions,\n) BaseModel {\n\tfilters := options.GetConfigFiltersWithCurrentRemoteAdded(ctx)\n\tisFilteredByCurrentRemote := false\n\trepo, err := repository.Current()\n\tif err == nil {\n\t\tcurrentCloneFilter := fmt.Sprintf(\"repo:%s/%s\", repo.Owner, repo.Name)\n\t\tfor token := range strings.FieldsSeq(filters) {\n\t\t\tif token == currentCloneFilter {\n\t\t\t\tisFilteredByCurrentRemote = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tm := BaseModel{\n\t\tCtx:          ctx,\n\t\tId:           options.Id,\n\t\tType:         options.Type,\n\t\tConfig:       options.Config,\n\t\tSpinner:      spinner.Model{Spinner: spinner.Dot},\n\t\tColumns:      options.Columns,\n\t\tSingularForm: options.Singular,\n\t\tPluralForm:   options.Plural,\n\t\tSearchBar: search.NewModel(ctx, search.SearchOptions{\n\t\t\tPrefix:       fmt.Sprintf(\"is:%s\", options.Type),\n\t\t\tInitialValue: filters,\n\t\t}),\n\t\tSearchValue:               filters,\n\t\tIsSearching:               false,\n\t\tIsFilteredByCurrentRemote: isFilteredByCurrentRemote,\n\t\tTotalCount:                0,\n\t\tPageInfo:                  nil,\n\t\tPromptConfirmationBox:     prompt.NewModel(ctx),\n\t\tShowAuthorIcon:            ctx.Config.ShowAuthorIcons,\n\t}\n\tm.Table = table.NewModel(\n\t\t*ctx,\n\t\tm.GetDimensions(),\n\t\toptions.LastUpdated,\n\t\toptions.CreatedAt,\n\t\tm.Columns,\n\t\tnil,\n\t\tm.SingularForm,\n\t\tutils.StringPtr(m.Ctx.Styles.Section.EmptyStateStyle.Render(\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"No %s were found that match the given filters\",\n\t\t\t\tm.PluralForm,\n\t\t\t),\n\t\t)),\n\t\t\"Loading...\",\n\t\tfalse,\n\t)\n\treturn m\n}\n\ntype Section interface {\n\tIdentifier\n\tComponent\n\tTable\n\tSearch\n\tPromptConfirmation\n\tGetConfig() config.SectionConfig\n\tUpdateProgramContext(ctx *context.ProgramContext)\n\tMakeSectionCmd(cmd tea.Cmd) tea.Cmd\n\tGetPagerContent() string\n\tGetItemSingularForm() string\n\tGetItemPluralForm() string\n\tGetTotalCount() int\n}\n\ntype Identifier interface {\n\tGetId() int\n\tGetType() string\n}\n\ntype Component interface {\n\tUpdate(msg tea.Msg) (Section, tea.Cmd)\n\tView() string\n}\n\ntype Table interface {\n\tNumRows() int\n\tGetCurrRow() data.RowData\n\tCurrRow() int\n\tNextRow() int\n\tPrevRow() int\n\tFirstItem() int\n\tLastItem() int\n\tFetchNextPageSectionRows() []tea.Cmd\n\tBuildRows() []table.Row\n\tResetRows()\n\tGetIsLoading() bool\n\tSetIsLoading(val bool)\n}\n\ntype Search interface {\n\tSetIsSearching(val bool) tea.Cmd\n\tIsSearchFocused() bool\n\tResetFilters()\n\tGetFilters() string\n\tResetPageInfo()\n}\n\ntype PromptConfirmation interface {\n\tSetIsPromptConfirmationShown(val bool) tea.Cmd\n\tIsPromptConfirmationFocused() bool\n\tSetPromptConfirmationAction(action string)\n\tGetPromptConfirmationAction() string\n\tGetPromptConfirmation() string\n}\n\nfunc (m *BaseModel) GetDimensions() constants.Dimensions {\n\treturn constants.Dimensions{\n\t\tWidth: max(\n\t\t\t0,\n\t\t\tm.Ctx.MainContentWidth-m.Ctx.Styles.Section.ContainerStyle.GetHorizontalPadding(),\n\t\t),\n\t\tHeight: max(0, m.Ctx.MainContentHeight-common.SearchHeight),\n\t}\n}\n\nfunc (m *BaseModel) GetConfig() config.SectionConfig {\n\treturn m.Config\n}\n\nfunc (m *BaseModel) HasRepoNameInConfiguredFilter() bool {\n\tfilters := m.SearchValue\n\tfor token := range strings.FieldsSeq(filters) {\n\t\tif strings.HasPrefix(token, \"repo:\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (m *BaseModel) HasCurrentRepoNameInConfiguredFilter() bool {\n\tfilters := m.SearchValue\n\trepo, err := repository.Current()\n\tif err != nil {\n\t\treturn false\n\t}\n\tcurrentCloneFilter := fmt.Sprintf(\"repo:%s/%s\", repo.Owner, repo.Name)\n\tfor token := range strings.FieldsSeq(filters) {\n\t\tif token == currentCloneFilter {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (m *BaseModel) SyncSmartFilterWithSearchValue() {\n\tm.IsFilteredByCurrentRemote = m.HasCurrentRepoNameInConfiguredFilter()\n}\n\nfunc (m *BaseModel) GetSearchValue() string {\n\tsearchValue := m.enrichSearchWithTemplateVars()\n\trepo, err := repository.Current()\n\tif err != nil {\n\t\treturn searchValue\n\t}\n\n\tcurrentCloneFilter := fmt.Sprintf(\"repo:%s/%s\", repo.Owner, repo.Name)\n\tvar searchValueWithoutCurrentCloneFilter []string\n\tfor token := range strings.FieldsSeq(searchValue) {\n\t\tif token != currentCloneFilter {\n\t\t\tsearchValueWithoutCurrentCloneFilter = append(\n\t\t\t\tsearchValueWithoutCurrentCloneFilter,\n\t\t\t\ttoken,\n\t\t\t)\n\t\t}\n\t}\n\tif m.IsFilteredByCurrentRemote {\n\t\treturn fmt.Sprintf(\"%s %s\", currentCloneFilter,\n\t\t\tstrings.Join(searchValueWithoutCurrentCloneFilter, \" \"))\n\t}\n\treturn strings.Join(searchValueWithoutCurrentCloneFilter, \" \")\n}\n\nfunc (m *BaseModel) enrichSearchWithTemplateVars() string {\n\tsearchValue := m.SearchValue\n\tsearchVars := struct{ Now time.Time }{\n\t\tNow: time.Now(),\n\t}\n\tsl := slog.New(log.Default())\n\thandler := sprout.New(\n\t\tsprout.WithRegistries(timeregistry.NewRegistry(), utils.NewRegistry()),\n\t\tsprout.WithLogger(sl),\n\t)\n\tfuncs := handler.Build()\n\n\ttmpl, err := template.New(\"search\").Funcs(funcs).Parse(searchValue)\n\tif err != nil {\n\t\tlog.Error(\"bad template\", \"err\", err)\n\t\treturn searchValue\n\t}\n\tvar buf bytes.Buffer\n\terr = tmpl.Execute(&buf, searchVars)\n\tif err != nil {\n\t\treturn searchValue\n\t}\n\n\treturn buf.String()\n}\n\nfunc (m *BaseModel) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.Ctx = ctx\n\tnewDimensions := m.GetDimensions()\n\ttableDimensions := constants.Dimensions{\n\t\tHeight: max(0, newDimensions.Height-2),\n\t\tWidth:  max(0, newDimensions.Width),\n\t}\n\tm.Table.SetDimensions(tableDimensions)\n\tm.Table.UpdateProgramContext(ctx)\n\tm.Table.SyncViewPortContent()\n\tm.SearchBar.UpdateProgramContext(ctx)\n}\n\ntype SectionRowsFetchedMsg struct {\n\tSectionId int\n\tIssues    []data.RowData\n}\n\nfunc (msg SectionRowsFetchedMsg) GetSectionId() int {\n\treturn msg.SectionId\n}\n\nfunc (m *BaseModel) GetId() int {\n\treturn m.Id\n}\n\nfunc (m *BaseModel) GetType() string {\n\treturn m.Type\n}\n\nfunc (m *BaseModel) CurrRow() int {\n\treturn m.Table.GetCurrItem()\n}\n\nfunc (m *BaseModel) NextRow() int {\n\treturn m.Table.NextItem()\n}\n\nfunc (m *BaseModel) PrevRow() int {\n\treturn m.Table.PrevItem()\n}\n\nfunc (m *BaseModel) FirstItem() int {\n\treturn m.Table.FirstItem()\n}\n\nfunc (m *BaseModel) LastItem() int {\n\treturn m.Table.LastItem()\n}\n\nfunc (m *BaseModel) IsSearchFocused() bool {\n\treturn m.IsSearching\n}\n\nfunc (m *BaseModel) GetIsLoading() bool {\n\treturn m.IsLoading\n}\n\nfunc (m *BaseModel) SetIsSearching(val bool) tea.Cmd {\n\tm.IsSearching = val\n\tif val {\n\t\treturn tea.Batch(m.SearchBar.Focus(), m.SearchBar.Init())\n\t} else {\n\t\tm.SearchBar.Blur()\n\t\treturn nil\n\t}\n}\n\nfunc (m *BaseModel) ResetFilters() {\n\tm.SearchBar.SetValue(m.GetSearchValue())\n}\n\nfunc (m *BaseModel) ResetPageInfo() {\n\tm.PageInfo = nil\n}\n\nfunc (m *BaseModel) IsPromptConfirmationFocused() bool {\n\treturn m.IsPromptConfirmationShown\n}\n\nfunc (m *BaseModel) SetIsPromptConfirmationShown(val bool) tea.Cmd {\n\tm.IsPromptConfirmationShown = val\n\tif val {\n\t\tm.PromptConfirmationBox.Focus()\n\t\treturn m.PromptConfirmationBox.Init()\n\t}\n\n\tm.PromptConfirmationBox.Blur()\n\treturn nil\n}\n\nfunc (m *BaseModel) SetPromptConfirmationAction(action string) {\n\tm.PromptConfirmationAction = action\n}\n\nfunc (m *BaseModel) GetPromptConfirmationAction() string {\n\treturn m.PromptConfirmationAction\n}\n\ntype SectionMsg struct {\n\tId          int\n\tType        string\n\tInternalMsg tea.Msg\n}\n\nfunc (m *BaseModel) MakeSectionCmd(cmd tea.Cmd) tea.Cmd {\n\tif cmd == nil {\n\t\treturn nil\n\t}\n\n\treturn func() tea.Msg {\n\t\tinternalMsg := cmd()\n\t\treturn SectionMsg{\n\t\t\tId:          m.Id,\n\t\t\tType:        m.Type,\n\t\t\tInternalMsg: internalMsg,\n\t\t}\n\t}\n}\n\nfunc (m *BaseModel) GetFilters() string {\n\treturn m.GetSearchValue()\n}\n\nfunc (m *BaseModel) GetMainContent() string {\n\tif m.Table.Rows == nil {\n\t\td := m.GetDimensions()\n\t\treturn lipgloss.Place(\n\t\t\td.Width,\n\t\t\td.Height,\n\t\t\tlipgloss.Center,\n\t\t\tlipgloss.Center,\n\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"%s you can change the search query by pressing %s and submitting it with %s\",\n\t\t\t\tlipgloss.NewStyle().Bold(true).Render(\" Tip:\"),\n\t\t\t\tm.Ctx.Styles.Section.KeyStyle.Render(\"/\"),\n\t\t\t\tm.Ctx.Styles.Section.KeyStyle.Render(\"Enter\"),\n\t\t\t),\n\t\t)\n\t} else {\n\t\treturn m.Table.View()\n\t}\n}\n\nfunc (m *BaseModel) View() string {\n\tsearch := m.SearchBar.View(m.Ctx)\n\treturn m.Ctx.Styles.Section.ContainerStyle.Render(\n\t\tlipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tsearch,\n\t\t\tm.GetMainContent(),\n\t\t),\n\t)\n}\n\nfunc (m *BaseModel) ResetRows() {\n\tm.Table.Rows = nil\n\tm.ResetPageInfo()\n\tm.Table.ResetCurrItem()\n}\n\nfunc (m *BaseModel) LastUpdated() time.Time {\n\treturn m.Table.LastUpdated()\n}\n\nfunc (m *BaseModel) CreatedAt() time.Time {\n\treturn m.Table.CreatedAt()\n}\n\nfunc (m *BaseModel) UpdateTotalItemsCount(count int) {\n\tm.Table.UpdateTotalItemsCount(count)\n}\n\nfunc (m *BaseModel) GetPromptConfirmation() string {\n\tif m.IsPromptConfirmationShown {\n\t\tvar prompt string\n\t\tswitch {\n\t\tcase m.PromptConfirmationAction == \"close\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to close this PR? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"reopen\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to reopen this PR? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"ready\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to mark this PR as ready? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"merge\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to merge this PR? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"update\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to update this PR? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"approveWorkflows\" && m.Ctx.View == config.PRsView:\n\t\t\tprompt = \"Are you sure you want to approve all workflows? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"close\" && m.Ctx.View == config.IssuesView:\n\t\t\tprompt = \"Are you sure you want to close this issue? (Y/n) \"\n\n\t\tcase m.PromptConfirmationAction == \"reopen\" && m.Ctx.View == config.IssuesView:\n\t\t\tprompt = \"Are you sure you want to reopen this issue? (Y/n) \"\n\t\tcase m.PromptConfirmationAction == \"delete\" && m.Ctx.View == config.RepoView:\n\t\t\tprompt = \"Are you sure you want to delete this branch? (Y/n) \"\n\t\tcase m.PromptConfirmationAction == \"new\" && m.Ctx.View == config.RepoView:\n\t\t\tprompt = \"Enter branch name: \"\n\t\tcase m.PromptConfirmationAction == \"create_pr\" && m.Ctx.View == config.RepoView:\n\t\t\tprompt = \"Enter PR title: \"\n\t\tcase m.PromptConfirmationAction == \"done_all\" && m.Ctx.View == config.NotificationsView:\n\t\t\tprompt = \"Are you sure you want to mark all as done? (Y/n) \"\n\t\t}\n\n\t\tm.PromptConfirmationBox.SetPrompt(prompt)\n\n\t\treturn m.Ctx.Styles.ListViewPort.PagerStyle.Render(m.PromptConfirmationBox.View())\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "internal/tui/components/section/section_test.go",
    "content": "package section\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/cli/go-gh/v2/pkg/repository\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prompt\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc currentRepoFilter(t *testing.T) string {\n\tt.Helper()\n\tt.Setenv(\"GH_REPO\", \"https://github.com/dlvhdr/gh-dash\")\n\trepo, err := repository.Current()\n\tif err != nil {\n\t\tt.Fatal(\"failed to resolve current repository:\", err)\n\t}\n\treturn fmt.Sprintf(\"repo:%s/%s\", repo.Owner, repo.Name)\n}\n\nfunc TestHasRepoNameInConfiguredFilter(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname        string\n\t\tsearchValue string\n\t\twant        bool\n\t}{\n\t\t{\n\t\t\tname:        \"no repo filter\",\n\t\t\tsearchValue: \"is:open author:@me\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"has current repo filter\",\n\t\t\tsearchValue: repoFilter + \" is:open\",\n\t\t\twant:        true,\n\t\t},\n\t\t{\n\t\t\tname:        \"has different repo filter\",\n\t\t\tsearchValue: \"repo:other/repo is:open\",\n\t\t\twant:        true,\n\t\t},\n\t\t{\n\t\t\tname:        \"empty search value\",\n\t\t\tsearchValue: \"\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"repo filter with similar prefix\",\n\t\t\tsearchValue: repoFilter + \"-extra is:open\",\n\t\t\twant:        true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := BaseModel{SearchValue: tt.searchValue}\n\t\t\trequire.Equal(t, tt.want, m.HasRepoNameInConfiguredFilter())\n\t\t})\n\t}\n}\n\nfunc TestHasCurrentRepoNameInConfiguredFilter(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname        string\n\t\tsearchValue string\n\t\twant        bool\n\t}{\n\t\t{\n\t\t\tname:        \"no repo filter\",\n\t\t\tsearchValue: \"is:open author:@me\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"has current repo filter\",\n\t\t\tsearchValue: repoFilter + \" is:open\",\n\t\t\twant:        true,\n\t\t},\n\t\t{\n\t\t\tname:        \"has different repo filter\",\n\t\t\tsearchValue: \"repo:other/repo is:open\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"current repo filter with extra suffix does not match\",\n\t\t\tsearchValue: repoFilter + \"-extra is:open\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"current repo filter alone\",\n\t\t\tsearchValue: repoFilter,\n\t\t\twant:        true,\n\t\t},\n\t\t{\n\t\t\tname:        \"empty search value\",\n\t\t\tsearchValue: \"\",\n\t\t\twant:        false,\n\t\t},\n\t\t{\n\t\t\tname:        \"multiple repo filters including current\",\n\t\t\tsearchValue: \"repo:other/repo \" + repoFilter + \" is:open\",\n\t\t\twant:        true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := BaseModel{SearchValue: tt.searchValue}\n\t\t\trequire.Equal(t, tt.want, m.HasCurrentRepoNameInConfiguredFilter())\n\t\t})\n\t}\n}\n\nfunc TestSyncSmartFilterWithSearchValue(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname        string\n\t\tsearchValue string\n\t\twantFlag    bool\n\t}{\n\t\t{\n\t\t\tname:        \"search contains current repo filter\",\n\t\t\tsearchValue: repoFilter + \" is:open\",\n\t\t\twantFlag:    true,\n\t\t},\n\t\t{\n\t\t\tname:        \"search does not contain current repo filter\",\n\t\t\tsearchValue: \"is:open author:@me\",\n\t\t\twantFlag:    false,\n\t\t},\n\t\t{\n\t\t\tname:        \"search contains different repo filter\",\n\t\t\tsearchValue: \"repo:other/repo is:open\",\n\t\t\twantFlag:    false,\n\t\t},\n\t\t{\n\t\t\tname:        \"similar repo name does not set flag\",\n\t\t\tsearchValue: repoFilter + \"-extra is:open\",\n\t\t\twantFlag:    false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := BaseModel{\n\t\t\t\tSearchValue:               tt.searchValue,\n\t\t\t\tIsFilteredByCurrentRemote: !tt.wantFlag,\n\t\t\t}\n\t\t\tm.SyncSmartFilterWithSearchValue()\n\t\t\trequire.Equal(t, tt.wantFlag, m.IsFilteredByCurrentRemote)\n\t\t})\n\t}\n}\n\nfunc TestGetSearchValue(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname                      string\n\t\tsearchValue               string\n\t\tisFilteredByCurrentRemote bool\n\t\twantContainsRepoFilter    bool\n\t\twantContainsOtherFilters  bool\n\t}{\n\t\t{\n\t\t\tname:                      \"smart filter on adds repo filter\",\n\t\t\tsearchValue:               \"is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    true,\n\t\t\twantContainsOtherFilters:  true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"smart filter off does not add repo filter\",\n\t\t\tsearchValue:               \"is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: false,\n\t\t\twantContainsRepoFilter:    false,\n\t\t\twantContainsOtherFilters:  true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"smart filter on with repo already present does not duplicate\",\n\t\t\tsearchValue:               repoFilter + \" is:open\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    true,\n\t\t\twantContainsOtherFilters:  true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"similar repo name is preserved when smart filter is on\",\n\t\t\tsearchValue:               repoFilter + \"-extra is:open\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"similar repo name is preserved when smart filter is off\",\n\t\t\tsearchValue:               repoFilter + \"-extra is:open\",\n\t\t\tisFilteredByCurrentRemote: false,\n\t\t\twantContainsRepoFilter:    false,\n\t\t},\n\t\t{\n\t\t\tname:                      \"empty search value with smart filter on\",\n\t\t\tsearchValue:               \"\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"empty search value with smart filter off\",\n\t\t\tsearchValue:               \"\",\n\t\t\tisFilteredByCurrentRemote: false,\n\t\t\twantContainsRepoFilter:    false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := BaseModel{\n\t\t\t\tSearchValue:               tt.searchValue,\n\t\t\t\tIsFilteredByCurrentRemote: tt.isFilteredByCurrentRemote,\n\t\t\t}\n\n\t\t\tgot := m.GetSearchValue()\n\n\t\t\thasExactRepoFilter := false\n\t\t\tfor token := range strings.FieldsSeq(got) {\n\t\t\t\tif token == repoFilter {\n\t\t\t\t\thasExactRepoFilter = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\trequire.Equal(\n\t\t\t\tt,\n\t\t\t\ttt.wantContainsRepoFilter,\n\t\t\t\thasExactRepoFilter,\n\t\t\t\t\"GetSearchValue() = %q, expected repo filter present = %v\",\n\t\t\t\tgot,\n\t\t\t\ttt.wantContainsRepoFilter,\n\t\t\t)\n\n\t\t\tif tt.wantContainsOtherFilters {\n\t\t\t\trequire.Contains(t, got, \"is:open\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetSearchValue_SimilarRepoNameNotStripped(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\tsimilarRepo := repoFilter + \"-extra\"\n\n\tm := BaseModel{\n\t\tSearchValue:               similarRepo + \" is:open\",\n\t\tIsFilteredByCurrentRemote: false,\n\t}\n\n\tgot := m.GetSearchValue()\n\n\trequire.Contains(t, got, similarRepo,\n\t\t\"similar repo name should not be stripped from search value\")\n}\n\nfunc TestGetSearchValue_ManualRepoFilterRemoval(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname                      string\n\t\tconfigFilters             string\n\t\tsearchValue               string\n\t\tisFilteredByCurrentRemote bool\n\t\twantContainsRepoFilter    bool\n\t}{\n\t\t{\n\t\t\tname:                      \"smart filtering on, repo filter in search value\",\n\t\t\tconfigFilters:             \"is:open author:@me\",\n\t\t\tsearchValue:               repoFilter + \" is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    true,\n\t\t},\n\t\t{\n\t\t\tname:                      \"smart filtering off via toggle, repo filter not in search value\",\n\t\t\tconfigFilters:             \"is:open author:@me\",\n\t\t\tsearchValue:               \"is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: false,\n\t\t\twantContainsRepoFilter:    false,\n\t\t},\n\t\t{\n\t\t\tname:                      \"user manually removed repo filter from search bar\",\n\t\t\tconfigFilters:             \"is:open author:@me\",\n\t\t\tsearchValue:               \"is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    false,\n\t\t},\n\t\t{\n\t\t\tname:                      \"user replaced repo filter with a different repo\",\n\t\t\tconfigFilters:             \"is:open author:@me\",\n\t\t\tsearchValue:               \"repo:other/repo is:open author:@me\",\n\t\t\tisFilteredByCurrentRemote: true,\n\t\t\twantContainsRepoFilter:    false,\n\t\t},\n\t\t{\n\t\t\tname:                      \"config already has repo filter, search value unchanged\",\n\t\t\tconfigFilters:             repoFilter + \" is:open\",\n\t\t\tsearchValue:               repoFilter + \" is:open\",\n\t\t\tisFilteredByCurrentRemote: false,\n\t\t\twantContainsRepoFilter:    true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tm := BaseModel{\n\t\t\t\tConfig:                    config.SectionConfig{Filters: tt.configFilters},\n\t\t\t\tSearchValue:               tt.searchValue,\n\t\t\t\tIsFilteredByCurrentRemote: tt.isFilteredByCurrentRemote,\n\t\t\t}\n\n\t\t\tm.SyncSmartFilterWithSearchValue()\n\t\t\tgot := m.GetSearchValue()\n\n\t\t\tcontainsRepoFilter := false\n\t\t\tfor token := range strings.FieldsSeq(got) {\n\t\t\t\tif token == repoFilter {\n\t\t\t\t\tcontainsRepoFilter = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.wantContainsRepoFilter, containsRepoFilter,\n\t\t\t\t\"GetSearchValue() = %q, contains %q = %v, want %v\",\n\t\t\t\tgot, repoFilter, containsRepoFilter, tt.wantContainsRepoFilter)\n\t\t})\n\t}\n}\n\nfunc TestGetConfigFiltersWithCurrentRemoteAdded(t *testing.T) {\n\trepoFilter := currentRepoFilter(t)\n\n\ttests := []struct {\n\t\tname                   string\n\t\tfilters                string\n\t\tsmartFilteringAtLaunch bool\n\t\twantContainsRepoFilter bool\n\t}{\n\t\t{\n\t\t\tname:                   \"smart filtering enabled, no repo in config\",\n\t\t\tfilters:                \"is:open author:@me\",\n\t\t\tsmartFilteringAtLaunch: true,\n\t\t\twantContainsRepoFilter: true,\n\t\t},\n\t\t{\n\t\t\tname:                   \"smart filtering disabled, no repo in config\",\n\t\t\tfilters:                \"is:open author:@me\",\n\t\t\tsmartFilteringAtLaunch: false,\n\t\t\twantContainsRepoFilter: false,\n\t\t},\n\t\t{\n\t\t\tname:                   \"smart filtering enabled, repo already in config\",\n\t\t\tfilters:                repoFilter + \" is:open\",\n\t\t\tsmartFilteringAtLaunch: true,\n\t\t\twantContainsRepoFilter: true,\n\t\t},\n\t\t{\n\t\t\tname:                   \"smart filtering enabled, different repo in config\",\n\t\t\tfilters:                \"repo:other/repo is:open\",\n\t\t\tsmartFilteringAtLaunch: true,\n\t\t\twantContainsRepoFilter: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\toptions := NewSectionOptions{\n\t\t\t\tConfig: config.SectionConfig{Filters: tt.filters},\n\t\t\t}\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tConfig: &config.Config{\n\t\t\t\t\tSmartFilteringAtLaunch: tt.smartFilteringAtLaunch,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tgot := options.GetConfigFiltersWithCurrentRemoteAdded(ctx)\n\n\t\t\thasRepoFilter := false\n\t\t\tfor token := range strings.FieldsSeq(got) {\n\t\t\t\tif token == repoFilter {\n\t\t\t\t\thasRepoFilter = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.wantContainsRepoFilter, hasRepoFilter,\n\t\t\t\t\"GetConfigFiltersWithCurrentRemoteAdded() = %q, expected repo filter = %v\",\n\t\t\t\tgot, tt.wantContainsRepoFilter)\n\n\t\t\trequire.Contains(t, got, \"is:open\",\n\t\t\t\t\"original filters should be preserved\")\n\t\t})\n\t}\n}\n\nfunc TestGetPromptConfirmation(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\taction       string\n\t\tview         config.ViewType\n\t\twantNonEmpty bool\n\t}{\n\t\t{\n\t\t\tname:         \"done_all in notifications view shows confirmation\",\n\t\t\taction:       \"done_all\",\n\t\t\tview:         config.NotificationsView,\n\t\t\twantNonEmpty: true,\n\t\t},\n\t\t{\n\t\t\tname:         \"close in PRs view shows confirmation\",\n\t\t\taction:       \"close\",\n\t\t\tview:         config.PRsView,\n\t\t\twantNonEmpty: true,\n\t\t},\n\t\t{\n\t\t\tname:         \"merge in PRs view shows confirmation\",\n\t\t\taction:       \"merge\",\n\t\t\tview:         config.PRsView,\n\t\t\twantNonEmpty: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tView: tt.view,\n\t\t\t}\n\t\t\tm := BaseModel{\n\t\t\t\tIsPromptConfirmationShown: true,\n\t\t\t\tPromptConfirmationAction:  tt.action,\n\t\t\t\tPromptConfirmationBox:     prompt.NewModel(ctx),\n\t\t\t}\n\t\t\tm.Ctx = ctx\n\n\t\t\tresult := m.GetPromptConfirmation()\n\t\t\tif tt.wantNonEmpty {\n\t\t\t\trequire.NotEmpty(\n\t\t\t\t\tt,\n\t\t\t\t\tresult,\n\t\t\t\t\t\"GetPromptConfirmation() should return non-empty for action %q in view %v\",\n\t\t\t\t\ttt.action,\n\t\t\t\t\ttt.view,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/sidebar/sidebar.go",
    "content": "package sidebar\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/viewport\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n)\n\ntype Model struct {\n\tIsOpen     bool\n\tdata       string\n\tviewport   viewport.Model\n\tctx        *context.ProgramContext\n\temptyState string\n}\n\nfunc NewModel() Model {\n\treturn Model{\n\t\tIsOpen: false,\n\t\tdata:   \"\",\n\t\tviewport: viewport.New(\n\t\t\tviewport.WithWidth(0),\n\t\t\tviewport.WithHeight(0),\n\t\t),\n\t\tctx:        nil,\n\t\temptyState: \"Nothing selected...\",\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tswitch {\n\t\tcase key.Matches(msg, keys.Keys.PageDown):\n\t\t\tm.viewport.HalfPageDown()\n\n\t\tcase key.Matches(msg, keys.Keys.PageUp):\n\t\t\tm.viewport.HalfPageUp()\n\t\t}\n\t}\n\n\treturn m, nil\n}\n\nfunc (m Model) View() string {\n\tif !m.IsOpen {\n\t\treturn \"\"\n\t}\n\n\theight := m.ctx.MainContentHeight\n\tstyle := m.ctx.Styles.Sidebar.Root.\n\t\tHeight(height).\n\t\tWidth(m.ctx.DynamicPreviewWidth).\n\t\tMaxWidth(m.ctx.DynamicPreviewWidth)\n\n\tif m.data == \"\" {\n\t\treturn style.Align(lipgloss.Center).Render(\n\t\t\tlipgloss.PlaceVertical(height, lipgloss.Center, m.emptyState),\n\t\t)\n\t}\n\n\treturn style.Render(lipgloss.JoinVertical(\n\t\tlipgloss.Top,\n\t\tm.viewport.View(),\n\t\tm.ctx.Styles.Sidebar.PagerStyle.\n\t\t\tRender(fmt.Sprintf(\"%d%%\", int(m.viewport.ScrollPercent()*100))),\n\t))\n}\n\nfunc (m *Model) SetContent(data string) {\n\tm.data = data\n\tm.viewport.SetContent(data)\n}\n\nfunc (m *Model) GetSidebarContentWidth() int {\n\tif m.ctx == nil || m.ctx.Config == nil {\n\t\treturn 0\n\t}\n\treturn max(0, m.ctx.DynamicPreviewWidth-m.ctx.Styles.Sidebar.BorderWidth)\n}\n\nfunc (m *Model) ScrollToTop() {\n\tm.viewport.GotoTop()\n}\n\nfunc (m *Model) ScrollToBottom() {\n\tm.viewport.GotoBottom()\n}\n\nfunc (m *Model) ScrollToPercent(percent float64) {\n\ttotalLines := m.viewport.TotalLineCount()\n\ttargetLine := int(float64(totalLines) * percent)\n\tm.viewport.SetYOffset(targetLine)\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tif ctx == nil {\n\t\treturn\n\t}\n\tm.ctx = ctx\n\tm.viewport.SetHeight(m.ctx.MainContentHeight - m.ctx.Styles.Sidebar.PagerHeight)\n\tm.viewport.SetWidth(m.GetSidebarContentWidth())\n}\n"
  },
  {
    "path": "internal/tui/components/table/table.go",
    "content": "package table\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/spinner\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\t\"github.com/charmbracelet/x/ansi\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/listviewport\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype Model struct {\n\tctx            context.ProgramContext\n\tColumns        []Column\n\tRows           []Row\n\tEmptyState     *string\n\tloadingMessage string\n\tisLoading      bool\n\tloadingSpinner spinner.Model\n\tdimensions     constants.Dimensions\n\trowsViewport   listviewport.Model\n\tContentHeight  int // Optional: override content height (0 = use default from config)\n}\n\ntype Column struct {\n\tTitle         string\n\tHidden        *bool\n\tWidth         *int\n\tComputedWidth int\n\tGrow          *bool\n\tAlign         *lipgloss.Position // Optional alignment (defaults to left)\n}\n\ntype Row []string\n\nfunc NewModel(\n\tctx context.ProgramContext,\n\tdimensions constants.Dimensions,\n\tlastUpdated time.Time,\n\tcreatedAt time.Time,\n\tcolumns []Column,\n\trows []Row,\n\titemTypeLabel string,\n\temptyState *string,\n\tloadingMessage string,\n\tisLoading bool,\n) Model {\n\titemHeight := 1\n\tif !ctx.Config.Theme.Ui.Table.Compact {\n\t\titemHeight += 1\n\t}\n\tif ctx.Config.Theme.Ui.Table.ShowSeparator {\n\t\titemHeight += 1\n\t}\n\n\tloadingSpinner := spinner.New()\n\tloadingSpinner.Spinner = spinner.Dot\n\tloadingSpinner.Style = lipgloss.NewStyle().Foreground(ctx.Theme.SecondaryText)\n\n\treturn Model{\n\t\tctx:            ctx,\n\t\tColumns:        columns,\n\t\tRows:           rows,\n\t\tEmptyState:     emptyState,\n\t\tloadingMessage: loadingMessage,\n\t\tisLoading:      isLoading,\n\t\tloadingSpinner: loadingSpinner,\n\t\tdimensions:     dimensions,\n\t\trowsViewport: listviewport.NewModel(\n\t\t\tctx,\n\t\t\tdimensions,\n\t\t\tlastUpdated,\n\t\t\tcreatedAt,\n\t\t\titemTypeLabel,\n\t\t\tlen(rows),\n\t\t\titemHeight,\n\t\t),\n\t}\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tvar cmd tea.Cmd\n\tif m.isLoading {\n\t\tm.loadingSpinner, cmd = m.loadingSpinner.Update(msg)\n\t}\n\treturn m, cmd\n}\n\nfunc (m Model) StartLoadingSpinner() tea.Cmd {\n\treturn m.loadingSpinner.Tick\n}\n\nfunc (m Model) View() string {\n\theader := m.renderHeader()\n\tbody := m.renderBody()\n\n\treturn lipgloss.JoinVertical(lipgloss.Left, header, body)\n}\n\nfunc (m *Model) SetIsLoading(isLoading bool) {\n\tm.isLoading = isLoading\n}\n\nfunc (m *Model) SetDimensions(dimensions constants.Dimensions) {\n\tm.dimensions = dimensions\n\tm.rowsViewport.SetDimensions(constants.Dimensions{\n\t\tWidth:  m.dimensions.Width,\n\t\tHeight: m.dimensions.Height,\n\t})\n}\n\nfunc (m *Model) ResetCurrItem() {\n\tm.rowsViewport.ResetCurrItem()\n}\n\nfunc (m *Model) GetCurrItem() int {\n\treturn m.rowsViewport.GetCurrItem()\n}\n\nfunc (m *Model) PrevItem() int {\n\tcurrItem := m.rowsViewport.PrevItem()\n\tm.SyncViewPortContent()\n\n\treturn currItem\n}\n\nfunc (m *Model) NextItem() int {\n\tcurrItem := m.rowsViewport.NextItem()\n\tm.SyncViewPortContent()\n\n\treturn currItem\n}\n\nfunc (m *Model) FirstItem() int {\n\tcurrItem := m.rowsViewport.FirstItem()\n\tm.SyncViewPortContent()\n\n\treturn currItem\n}\n\nfunc (m *Model) LastItem() int {\n\tcurrItem := m.rowsViewport.LastItem()\n\tm.SyncViewPortContent()\n\n\treturn currItem\n}\n\nfunc (m *Model) cacheColumnWidths() {\n\tcolumns := m.renderHeaderColumns()\n\tfor i, col := range columns {\n\t\tif m.Columns[i].Hidden != nil && *m.Columns[i].Hidden {\n\t\t\tcontinue\n\t\t}\n\t\tm.Columns[i].ComputedWidth = lipgloss.Width(col)\n\t}\n}\n\nfunc (m *Model) SyncViewPortContent() {\n\theaderColumns := m.renderHeaderColumns()\n\tm.cacheColumnWidths()\n\trenderedRows := make([]string, 0, len(m.Rows))\n\tfor i := range m.Rows {\n\t\trenderedRows = append(renderedRows, m.renderRow(i, headerColumns))\n\t}\n\n\tm.rowsViewport.SyncViewPort(\n\t\tlipgloss.JoinVertical(lipgloss.Left, renderedRows...),\n\t)\n}\n\nfunc (m *Model) SetRows(rows []Row) {\n\tm.Rows = rows\n\tm.rowsViewport.SetNumItems(len(m.Rows))\n\tm.SyncViewPortContent()\n}\n\n// SetContentHeight sets a custom content height for rows (use 0 to use default config-based height)\nfunc (m *Model) SetContentHeight(height int) {\n\tm.ContentHeight = height\n\t// Recalculate item height for viewport\n\titemHeight := height\n\tif m.ctx.Config.Theme.Ui.Table.ShowSeparator {\n\t\titemHeight += 1\n\t}\n\tm.rowsViewport.SetItemHeight(itemHeight)\n}\n\nfunc (m *Model) OnLineDown() {\n\tm.rowsViewport.NextItem()\n}\n\nfunc (m *Model) OnLineUp() {\n\tm.rowsViewport.PrevItem()\n}\n\nfunc (m *Model) getShownColumns() []Column {\n\tshownColumns := make([]Column, 0, len(m.Columns))\n\tfor _, col := range m.Columns {\n\t\tif col.Hidden != nil && *col.Hidden {\n\t\t\tcontinue\n\t\t}\n\n\t\tshownColumns = append(shownColumns, col)\n\t}\n\treturn shownColumns\n}\n\nfunc (m *Model) renderHeaderColumns() []string {\n\tshownColumns := m.getShownColumns()\n\trenderedColumns := make([]string, len(shownColumns))\n\ttakenWidth := 0\n\tnumGrowingColumns := 0\n\tfor i, column := range shownColumns {\n\t\tif column.Grow != nil && *column.Grow {\n\t\t\tnumGrowingColumns += 1\n\t\t\tcontinue\n\t\t}\n\n\t\tif column.Width != nil {\n\t\t\ttitle := column.Title\n\t\t\tstyle := m.ctx.Styles.Table.TitleCellStyle\n\t\t\t// Align headers for right-aligned columns\n\t\t\t// Use padding-free style to avoid truncation from PlaceHorizontal + padding\n\t\t\tif column.Align != nil && *column.Align == lipgloss.Right {\n\t\t\t\t// Center short headers (icons), right-align longer headers (text)\n\t\t\t\theaderAlign := lipgloss.Right\n\t\t\t\tif lipgloss.Width(title) <= 2 {\n\t\t\t\t\theaderAlign = lipgloss.Center\n\t\t\t\t}\n\t\t\t\ttitle = lipgloss.PlaceHorizontal(*column.Width, headerAlign, title)\n\t\t\t\tstyle = lipgloss.NewStyle().Bold(true).Foreground(m.ctx.Theme.PrimaryText)\n\t\t\t}\n\t\t\trenderedColumns[i] = style.\n\t\t\t\tWidth(*column.Width).\n\t\t\t\tMaxWidth(*column.Width).\n\t\t\t\tRender(title)\n\t\t\ttakenWidth += *column.Width\n\t\t\tcontinue\n\t\t}\n\n\t\tcell := m.ctx.Styles.Table.TitleCellStyle.Render(column.Title)\n\t\trenderedColumns[i] = cell\n\t\ttakenWidth += lipgloss.Width(cell)\n\t}\n\n\tif numGrowingColumns == 0 {\n\t\treturn renderedColumns\n\t}\n\n\tleftoverWidth := m.dimensions.Width - takenWidth\n\tgrowCellWidth := leftoverWidth / numGrowingColumns\n\tfor i, column := range shownColumns {\n\t\tif column.Grow == nil || !*column.Grow {\n\t\t\tcontinue\n\t\t}\n\n\t\trenderedColumns[i] = m.ctx.Styles.Table.TitleCellStyle.\n\t\t\tWidth(growCellWidth).\n\t\t\tMaxWidth(growCellWidth).\n\t\t\tRender(column.Title)\n\t}\n\n\treturn renderedColumns\n}\n\nfunc (m *Model) renderHeader() string {\n\theaderColumns := m.renderHeaderColumns()\n\theader := ansi.Truncate(\n\t\tlipgloss.JoinHorizontal(lipgloss.Top, headerColumns...),\n\t\tm.dimensions.Width,\n\t\tconstants.Ellipsis,\n\t)\n\treturn m.ctx.Styles.Table.HeaderStyle.\n\t\tWidth(m.dimensions.Width).\n\t\tHeight(common.TableHeaderHeight).\n\t\tRender(header)\n}\n\nfunc (m *Model) renderBody() string {\n\tbodyStyle := lipgloss.NewStyle().\n\t\tHeight(m.dimensions.Height).\n\t\tWidth(m.dimensions.Width)\n\n\tif m.isLoading {\n\t\treturn lipgloss.Place(\n\t\t\tm.dimensions.Width,\n\t\t\tm.dimensions.Height,\n\t\t\tlipgloss.Center,\n\t\t\tlipgloss.Center,\n\t\t\tfmt.Sprintf(\"%s%s\", m.loadingSpinner.View(), m.loadingMessage),\n\t\t)\n\t}\n\n\tif len(m.Rows) == 0 && m.EmptyState != nil {\n\t\treturn bodyStyle.Render(*m.EmptyState)\n\t}\n\n\treturn m.rowsViewport.View()\n}\n\nfunc (m *Model) renderRow(rowId int, headerColumns []string) string {\n\tvar style lipgloss.Style\n\n\tif m.rowsViewport.GetCurrItem() == rowId {\n\t\tstyle = m.ctx.Styles.Table.SelectedCellStyle\n\t} else {\n\t\tstyle = m.ctx.Styles.Table.CellStyle\n\t}\n\n\trenderedColumns := make([]string, 0, len(m.Columns))\n\theaderColId := 0\n\n\tfor i, column := range m.Columns {\n\t\tif column.Hidden != nil && *column.Hidden {\n\t\t\tcontinue\n\t\t}\n\n\t\tcolWidth := lipgloss.Width(headerColumns[headerColId])\n\t\tcolHeight := 1\n\t\tif m.ContentHeight > 0 {\n\t\t\t// Use custom content height if set\n\t\t\tcolHeight = m.ContentHeight\n\t\t} else if !m.ctx.Config.Theme.Ui.Table.Compact {\n\t\t\tcolHeight = 2\n\t\t}\n\t\tcol := m.Rows[rowId][i]\n\t\t// For multi-line content, truncate long lines and pad short lines\n\t\t// so lines don't wrap and background color extends properly\n\t\t// Account for cell padding (1 left + 1 right = 2)\n\t\tcontentWidth := max(colWidth-2, 1)\n\t\tvar renderedCol string\n\t\tif strings.Contains(col, \"\\n\") {\n\t\t\t// For multi-line content, apply cell style to each line individually\n\t\t\t// This ensures background color extends properly despite ANSI resets in content\n\t\t\tlines := strings.Split(col, \"\\n\")\n\t\t\trenderedLines := make([]string, len(lines))\n\t\t\tfor j, line := range lines {\n\t\t\t\tlineWidth := lipgloss.Width(line)\n\t\t\t\tif lineWidth > contentWidth {\n\t\t\t\t\tline = ansi.Truncate(line, contentWidth, constants.Ellipsis)\n\t\t\t\t}\n\t\t\t\tlineStyle := style.Width(colWidth).MaxWidth(colWidth).Height(1)\n\t\t\t\tif column.Align != nil {\n\t\t\t\t\tlineStyle = lineStyle.Align(*column.Align)\n\t\t\t\t}\n\t\t\t\trenderedLines[j] = lineStyle.Render(line)\n\t\t\t}\n\t\t\trenderedCol = strings.Join(renderedLines, \"\\n\")\n\t\t} else {\n\t\t\tcellStyle := style.\n\t\t\t\tWidth(colWidth).\n\t\t\t\tMaxWidth(colWidth).\n\t\t\t\tHeight(colHeight).\n\t\t\t\tMaxHeight(colHeight)\n\t\t\tif column.Align != nil {\n\t\t\t\tcellStyle = cellStyle.Align(*column.Align)\n\t\t\t}\n\t\t\trenderedCol = cellStyle.Render(col)\n\t\t}\n\n\t\trenderedColumns = append(renderedColumns, renderedCol)\n\t\theaderColId++\n\t}\n\n\treturn m.ctx.Styles.Table.RowStyle.\n\t\tBorderBottom(m.ctx.Config.Theme.Ui.Table.ShowSeparator).\n\t\tMaxWidth(m.dimensions.Width).\n\t\tRender(lipgloss.JoinHorizontal(lipgloss.Top, renderedColumns...))\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = *ctx\n\tm.rowsViewport.UpdateProgramContext(ctx)\n}\n\nfunc (m *Model) LastUpdated() time.Time {\n\treturn m.rowsViewport.LastUpdated\n}\n\nfunc (m *Model) CreatedAt() time.Time {\n\treturn m.rowsViewport.CreatedAt\n}\n\nfunc (m *Model) UpdateLastUpdated(t time.Time) {\n\tm.rowsViewport.LastUpdated = t\n}\n\nfunc (m *Model) UpdateTotalItemsCount(count int) {\n\tm.rowsViewport.SetTotalItems(count)\n}\n\nfunc (m *Model) IsLoading() bool {\n\treturn m.isLoading\n}\n"
  },
  {
    "path": "internal/tui/components/tabs/tabs.go",
    "content": "package tabs\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/spinner\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/carousel\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype SectionTab struct {\n\tsection section.Section\n\tspinner spinner.Model\n}\n\ntype Model struct {\n\tsections      []section.Section\n\tsectionTabs   []SectionTab\n\tcarousel      carousel.Model\n\tctx           *context.ProgramContext\n\tlatestVersion string\n}\n\nfunc NewModel(ctx *context.ProgramContext) Model {\n\tc := carousel.New(\n\t\tcarousel.WithHeight(1),\n\t\tcarousel.WithOverflowIndicators(\"←\", \"→\"),\n\t\tcarousel.WithSeparators(),\n\t)\n\tm := Model{\n\t\tcarousel: c,\n\t}\n\tm.UpdateProgramContext(ctx)\n\n\treturn m\n}\n\nfunc (m Model) Init() tea.Cmd {\n\treturn m.fetchHasNewVersion()\n}\n\nfunc (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {\n\tcmds := make([]tea.Cmd, 0)\n\tswitch msg := msg.(type) {\n\tcase latestVersionMsg:\n\t\tm.latestVersion = msg.version\n\tcase spinner.TickMsg:\n\t\tfor i, tab := range m.sectionTabs {\n\t\t\tif tab.section.GetIsLoading() {\n\t\t\t\tvar cmd tea.Cmd\n\t\t\t\tm.sectionTabs[i].spinner, cmd = tab.spinner.Update(msg)\n\t\t\t\tcmds = append(cmds, cmd)\n\t\t\t}\n\t\t}\n\t}\n\n\tm.UpdateTabTitles()\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m Model) View() string {\n\tc := m.carousel.View()\n\tlogo := m.viewLogo()\n\treturn m.ctx.Styles.Tabs.TabsRow.\n\t\tWidth(m.ctx.ScreenWidth).\n\t\tHeight(common.HeaderHeight).\n\t\tRender(lipgloss.JoinHorizontal(lipgloss.Bottom,\n\t\t\tlipgloss.NewStyle().Width(\n\t\t\t\tm.ctx.ScreenWidth-lipgloss.Width(logo)).Render(c), logo))\n}\n\ntype latestVersionMsg struct {\n\tversion string\n\terr     error\n}\n\nfunc (m *Model) fetchHasNewVersion() tea.Cmd {\n\treturn func() tea.Msg {\n\t\tr, err := data.FetchLatestVersion()\n\t\treturn latestVersionMsg{\n\t\t\tversion: r.Repository.LatestRelease.TagName,\n\t\t\terr:     err,\n\t\t}\n\t}\n}\n\nfunc (m *Model) CurrSectionId() int {\n\treturn m.carousel.Cursor()\n}\n\nfunc (m *Model) SetCurrSectionId(id int) {\n\tm.carousel.SetCursor(id)\n}\n\nfunc (m *Model) UpdateProgramContext(ctx *context.ProgramContext) {\n\tm.ctx = ctx\n\tm.carousel.SetStyles(carousel.Styles{\n\t\tItem:              ctx.Styles.Tabs.Tab,\n\t\tSelected:          ctx.Styles.Tabs.ActiveTab,\n\t\tOverflowIndicator: ctx.Styles.Tabs.OverflowIndicator,\n\t\tSeparator:         ctx.Styles.Tabs.TabSeparator,\n\t})\n\n\tm.carousel.SetWidth(ctx.ScreenWidth - lipgloss.Width(m.viewLogo()))\n}\n\nfunc (m *Model) SetSections(sections []section.Section) {\n\tsectionTabs := make([]SectionTab, 0)\n\tfor _, s := range sections {\n\t\ttab := SectionTab{section: s, spinner: spinner.New(\n\t\t\tspinner.WithSpinner(spinner.Dot), spinner.WithStyle(\n\t\t\t\tlipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText).PaddingLeft(2)))}\n\t\tsectionTabs = append(sectionTabs, tab)\n\t}\n\tm.sectionTabs = sectionTabs\n\tm.UpdateTabTitles()\n}\n\nfunc (m *Model) UpdateTabTitles() {\n\ttitles := make([]string, 0)\n\tfor i, tab := range m.sectionTabs {\n\t\tcfg := tab.section.GetConfig()\n\t\ttitle := cfg.Title\n\t\t// handle search section\n\t\tif i == 0 {\n\t\t\tif title == \"\" {\n\t\t\t\ttitle = constants.SearchIcon\n\t\t\t}\n\t\t} else if tab.section.GetIsLoading() {\n\t\t\ttitle = fmt.Sprintf(\"%s %s\", title, m.sectionTabs[i].spinner.View())\n\t\t} else if m.ctx.Config.Theme.Ui.SectionsShowCount {\n\t\t\ttitle = fmt.Sprintf(\"%s (%s)\", title,\n\t\t\t\tutils.ShortNumber(tab.section.GetTotalCount()))\n\t\t}\n\n\t\ttitles = append(titles, title)\n\t}\n\n\toldCursor := m.carousel.Cursor()\n\tm.carousel.SetItems(titles)\n\tm.carousel.SetCursor(oldCursor)\n}\n\nfunc (m *Model) viewLogo() string {\n\tversion := lipgloss.NewStyle().Foreground(m.ctx.Theme.SecondaryText).Render(m.ctx.Version)\n\tif m.latestVersion != \"\" && m.ctx.Version != \"dev\" && m.ctx.Version != m.latestVersion {\n\t\tversion = lipgloss.JoinVertical(\n\t\t\tlipgloss.Left,\n\t\t\tversion,\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tForeground(m.ctx.Styles.Colors.SuccessText).\n\t\t\t\tRender(\" Update available!\"),\n\t\t)\n\t} else {\n\t\tversion = lipgloss.PlaceVertical(2, lipgloss.Bottom, version)\n\t}\n\n\treturn lipgloss.NewStyle().\n\t\tPadding(0, 1, 0, 2).\n\t\tHeight(2).\n\t\tRender(lipgloss.JoinHorizontal(lipgloss.Bottom,\n\t\t\tlipgloss.NewStyle().Foreground(context.LogoColor).Render(constants.Logo),\n\t\t\t\" \",\n\t\t\tversion,\n\t\t))\n}\n\nfunc (m *Model) SetAllLoading() []tea.Cmd {\n\tcmds := make([]tea.Cmd, 0)\n\tfor i := range m.sectionTabs {\n\t\tcmds = append(cmds, m.sectionTabs[i].spinner.Tick)\n\t}\n\n\treturn cmds\n}\n"
  },
  {
    "path": "internal/tui/components/tabs/tabs_test.go",
    "content": "package tabs\n\nimport (\n\t\"fmt\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/log/v2\"\n\n\t// \"charm.land/x/exp/teatest\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tabs/testdata\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\n// func TestTabs(t *testing.T) {\n// \tt.Parallel()\n//\n// \tt.Run(\"Should display loading tabs\", func(t *testing.T) {\n// \t\tt.Parallel()\n// \t\tcfg, err := config.ParseConfig(config.Location{\n// \t\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n// \t\t\tSkipGlobalConfig: true,\n// \t\t})\n// \t\tif err != nil {\n// \t\t\tt.Error(err)\n// \t\t}\n// \t\tm := newTestModel(t, cfg)\n// \t\ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 30))\n//\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine   ⣻   |  Review   ⣻   |  All   ⣻\")\n// \t\ttm.Quit()\n//\n// \t\tfm := tm.FinalModel(t)\n// \t\tteatest.RequireEqualOutput(t, []byte(fm.View()))\n// \t})\n//\n// \tt.Run(\"Should display tab counts\", func(t *testing.T) {\n// \t\tt.Parallel()\n// \t\tcfg, err := config.ParseConfig(config.Location{\n// \t\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n// \t\t\tSkipGlobalConfig: true,\n// \t\t})\n// \t\tif err != nil {\n// \t\t\tt.Error(err)\n// \t\t}\n// \t\tm := newTestModel(t, cfg)\n// \t\ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 30))\n//\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine   ⣻   |  Review   ⣻   |  All   ⣻\")\n// \t\ttm.Send(dataFetchedMsg{})\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine (10)  |  Review (10)  |  All (10)\")\n// \t\ttm.Quit()\n//\n// \t\tfm := tm.FinalModel(t)\n// \t\tteatest.RequireEqualOutput(t, []byte(fm.View()))\n// \t})\n//\n// \tt.Run(\"Should allow setting new tabs\", func(t *testing.T) {\n// \t\tt.Parallel()\n// \t\tcfg, err := config.ParseConfig(config.Location{\n// \t\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n// \t\t\tSkipGlobalConfig: true,\n// \t\t})\n// \t\tif err != nil {\n// \t\t\tt.Error(err)\n// \t\t}\n// \t\tm := newTestModel(t, cfg)\n// \t\ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 30))\n//\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine   ⣻   |  Review   ⣻   |  All   ⣻\")\n// \t\ttm.Send(dataFetchedMsg{})\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine (10)  |  Review (10)  |  All (10)\")\n//\n// \t\ttm.Send(changeTabsMsg{})\n// \t\ttestutils.WaitForText(t, tm, \"  |  Mine New   ⣻   |  Review New   ⣻   |  All New   ⣻\")\n//\n// \t\ttm.Quit()\n//\n// \t\tfm := tm.FinalModel(t)\n// \t\tteatest.RequireEqualOutput(t, []byte(fm.View()))\n// \t})\n//\n// \tt.Run(\"Should show overflow symbol\", func(t *testing.T) {\n// \t\tt.Parallel()\n//\n// \t\tbaseCfg, err := config.ParseConfig(config.Location{\n// \t\t\tConfigFlag:       \"../../../config/testdata/test-config.yml\",\n// \t\t\tSkipGlobalConfig: true,\n// \t\t})\n// \t\tif err != nil {\n// \t\t\tt.Error(err)\n// \t\t}\n//\n// \t\tm := newTestModel(t, config.Config{\n// \t\t\tPRSections: []config.PrsSectionConfig{\n// \t\t\t\t{Title: \"1. Very long title\"},\n// \t\t\t\t{Title: \"2. Title\"},\n// \t\t\t\t{Title: \"3. Title\"},\n// \t\t\t\t{Title: \"4. Very long title\"},\n// \t\t\t\t{Title: \"5. Title\"},\n// \t\t\t\t{Title: \"6. Title\"},\n// \t\t\t\t{Title: \"7. Very long title\"},\n// \t\t\t},\n// \t\t\tTheme: baseCfg.Theme,\n// \t\t})\n//\n// \t\ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 30))\n//\n// \t\ttestutils.WaitForText(t, tm, \"  |  1. Very long title   ⣻   |  2. Title   ⣻   |  3. Title   ⣻   |  … →\")\n// \t\ttm.Send(dataFetchedMsg{})\n// \t\ttestutils.WaitForText(t, tm, \"  |  1. Very long title (10)  |  2. Title (10)  |  3. Title (10)  |  … →\")\n// \t\tfor i := 0; i < len(m.ctx.Config.PRSections); i++ {\n// \t\t\ttm.Send(tea.KeyMsg{\n// \t\t\t\tType:  tea.KeyRunes,\n// \t\t\t\tRunes: []rune(\"l\"),\n// \t\t\t})\n// \t\t}\n// \t\ttestutils.WaitForText(t, tm, \"← … (10)  |  5. Title (10)  |  6. Title (10)  |  7. Very long title (10)\")\n// \t\ttm.Quit()\n//\n// \t\tfm := tm.FinalModel(t)\n// \t\tteatest.RequireEqualOutput(t, []byte(fm.View()))\n// \t})\n// }\n\n// func init() {\n// \tlipgloss.SetColorProfile(termenv.Ascii)\n// \tif d := os.Getenv(\"DEBUG\"); d != \"\" {\n// \t\tlog.SetLevel(log.DebugLevel)\n// \t}\n// }\n\ntype testModel struct {\n\tctx  *context.ProgramContext\n\ttabs Model\n}\n\n// func newTestModel(t *testing.T, cfg config.Config) testModel {\n// \tt.Helper()\n// \tctx := &context.ProgramContext{\n// \t\tConfig:       &cfg,\n// \t\tScreenWidth:  90,\n// \t\tScreenHeight: 30,\n// \t\tView:         config.PRsView,\n// \t}\n//\n// \tctx.Theme = theme.ParseTheme(ctx.Config)\n// \tctx.Styles = context.InitStyles(ctx.Theme)\n//\n// \treturn testModel{\n// \t\tctx:  ctx,\n// \t\ttabs: NewModel(ctx),\n// \t}\n// }\n\ntype (\n\tinitMsg        struct{}\n\tdataFetchedMsg struct{}\n\tchangeTabsMsg  struct{}\n)\n\nfunc (m testModel) Init() tea.Cmd {\n\treturn func() tea.Msg { return initMsg{} }\n}\n\nfunc (m testModel) Update(msg tea.Msg) (testModel, tea.Cmd) {\n\tvar cmd tea.Cmd\n\tcmds := make([]tea.Cmd, 0)\n\tlog.Debug(\"got msg\", \"type\", fmt.Sprintf(\"%T\", msg), \"msg\", msg)\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tif msg.String() == \"l\" || msg.String() == \"right\" {\n\t\t\tm.tabs.SetCurrSectionId(m.tabs.CurrSectionId() + 1)\n\t\t}\n\t\tif msg.String() == \"h\" || msg.String() == \"left\" {\n\t\t\tm.tabs.SetCurrSectionId(m.tabs.CurrSectionId() - 1)\n\t\t}\n\n\t\tif msg.String() == \"q\" || msg.String() == \"ctrl+c\" {\n\t\t\treturn m, tea.Quit\n\t\t}\n\tcase initMsg:\n\t\tsections := make([]section.Section, 0)\n\t\tsearch := testdata.TestSection{Config: config.SectionConfig{Title: \"\"}}\n\t\tsections = append(sections, &search)\n\t\tfor _, cfg := range m.ctx.Config.PRSections {\n\t\t\ts := testdata.TestSection{Config: config.SectionConfig{Title: cfg.Title}}\n\t\t\ts.SetIsLoading(true)\n\t\t\tsections = append(sections, &s)\n\t\t}\n\t\tm.tabs.SetSections(sections)\n\t\tcmds = append(cmds, m.tabs.SetAllLoading()...)\n\n\tcase dataFetchedMsg:\n\t\tfor _, tab := range m.tabs.sectionTabs {\n\t\t\ttab.section.SetIsLoading(false)\n\t\t}\n\n\tcase changeTabsMsg:\n\t\tsections := make([]section.Section, 0)\n\t\tsearch := testdata.TestSection{Config: config.SectionConfig{Title: \"\"}}\n\t\tsections = append(sections, &search)\n\t\tfor _, cfg := range m.ctx.Config.PRSections {\n\t\t\ts := testdata.TestSection{Config: config.SectionConfig{Title: cfg.Title + \" New\"}}\n\t\t\ts.SetIsLoading(true)\n\t\t\tsections = append(sections, &s)\n\t\t}\n\t\tm.tabs.SetSections(sections)\n\t\tcmds = append(cmds, m.tabs.SetAllLoading()...)\n\t}\n\n\ttm, cmd := m.tabs.Update(msg)\n\tm.tabs = tm\n\tcmds = append(cmds, cmd)\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m testModel) View() string {\n\treturn m.tabs.View()\n}\n"
  },
  {
    "path": "internal/tui/components/tabs/testdata/TestTabs/Should_allow_setting_new_tabs.golden",
    "content": "                                                                             ▜▔▚▐▔▌▚▔▐ ▌  \n    |  Mine New   ⣻   |  Review New   ⣻   |  All New   ⣻                    ▟▁▞▐▔▌▁▚▐▔▌  \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
  },
  {
    "path": "internal/tui/components/tabs/testdata/TestTabs/Should_display_loading_tabs.golden",
    "content": "                                                                             ▜▔▚▐▔▌▚▔▐ ▌  \n    |  Mine   ⣻   |  Review   ⣻   |  All   ⣻                                ▟▁▞▐▔▌▁▚▐▔▌  \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
  },
  {
    "path": "internal/tui/components/tabs/testdata/TestTabs/Should_display_tab_counts.golden",
    "content": "                                                                             ▜▔▚▐▔▌▚▔▐ ▌  \n    |  Mine (10)  |  Review (10)  |  All (10)                               ▟▁▞▐▔▌▁▚▐▔▌  \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
  },
  {
    "path": "internal/tui/components/tabs/testdata/TestTabs/Should_show_overflow_symbol.golden",
    "content": "                                                                             ▜▔▚▐▔▌▚▔▐ ▌  \n ← … (10)  |  5. Title (10)  |  6. Title (10)  |  7. Very long title (10)    ▟▁▞▐▔▌▁▚▐▔▌  \n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
  },
  {
    "path": "internal/tui/components/tabs/testdata/test_section.go",
    "content": "package testdata\n\nimport (\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/table\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\ntype TestSection struct {\n\tConfig  config.SectionConfig\n\tloading bool\n}\n\n// BuildRows implements section.Section.\nfunc (t *TestSection) BuildRows() []table.Row {\n\tpanic(\"unimplemented\")\n}\n\n// CurrRow implements section.Section.\nfunc (t *TestSection) CurrRow() int {\n\tpanic(\"unimplemented\")\n}\n\n// FetchNextPageSectionRows implements section.Section.\nfunc (t *TestSection) FetchNextPageSectionRows() []tea.Cmd {\n\tpanic(\"unimplemented\")\n}\n\n// FirstItem implements section.Section.\nfunc (t *TestSection) FirstItem() int {\n\tpanic(\"unimplemented\")\n}\n\n// GetConfig implements section.Section.\nfunc (t *TestSection) GetConfig() config.SectionConfig {\n\treturn t.Config\n}\n\n// GetCurrRow implements section.Section.\nfunc (t *TestSection) GetCurrRow() data.RowData {\n\tpanic(\"unimplemented\")\n}\n\n// GetFilters implements section.Section.\nfunc (t *TestSection) GetFilters() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetId implements section.Section.\nfunc (t *TestSection) GetId() int {\n\tpanic(\"unimplemented\")\n}\n\n// GetIsLoading implements section.Section.\nfunc (t *TestSection) GetIsLoading() bool {\n\treturn t.loading\n}\n\n// GetItemPluralForm implements section.Section.\nfunc (t *TestSection) GetItemPluralForm() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetItemSingularForm implements section.Section.\nfunc (t *TestSection) GetItemSingularForm() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetPagerContent implements section.Section.\nfunc (t *TestSection) GetPagerContent() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetPromptConfirmation implements section.Section.\nfunc (t *TestSection) GetPromptConfirmation() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetPromptConfirmationAction implements section.Section.\nfunc (t *TestSection) GetPromptConfirmationAction() string {\n\tpanic(\"unimplemented\")\n}\n\n// GetTotalCount implements section.Section.\nfunc (t *TestSection) GetTotalCount() int {\n\treturn 10\n}\n\n// GetType implements section.Section.\nfunc (t *TestSection) GetType() string {\n\tpanic(\"unimplemented\")\n}\n\n// IsPromptConfirmationFocused implements section.Section.\nfunc (t *TestSection) IsPromptConfirmationFocused() bool {\n\tpanic(\"unimplemented\")\n}\n\n// IsSearchFocused implements section.Section.\nfunc (t *TestSection) IsSearchFocused() bool {\n\tpanic(\"unimplemented\")\n}\n\n// LastItem implements section.Section.\nfunc (t *TestSection) LastItem() int {\n\tpanic(\"unimplemented\")\n}\n\n// MakeSectionCmd implements section.Section.\nfunc (t *TestSection) MakeSectionCmd(cmd tea.Cmd) tea.Cmd {\n\tpanic(\"unimplemented\")\n}\n\n// NextRow implements section.Section.\nfunc (t *TestSection) NextRow() int {\n\tpanic(\"unimplemented\")\n}\n\n// NumRows implements section.Section.\nfunc (t *TestSection) NumRows() int {\n\tpanic(\"unimplemented\")\n}\n\n// PrevRow implements section.Section.\nfunc (t *TestSection) PrevRow() int {\n\tpanic(\"unimplemented\")\n}\n\n// ResetFilters implements section.Section.\nfunc (t *TestSection) ResetFilters() {\n\tpanic(\"unimplemented\")\n}\n\n// ResetPageInfo implements section.Section.\nfunc (t *TestSection) ResetPageInfo() {\n\tpanic(\"unimplemented\")\n}\n\n// ResetRows implements section.Section.\nfunc (t *TestSection) ResetRows() {\n\tpanic(\"unimplemented\")\n}\n\n// SetIsLoading implements section.Section.\nfunc (t *TestSection) SetIsLoading(val bool) {\n\tt.loading = val\n}\n\n// SetIsPromptConfirmationShown implements section.Section.\nfunc (t *TestSection) SetIsPromptConfirmationShown(val bool) tea.Cmd {\n\tpanic(\"unimplemented\")\n}\n\n// SetIsSearching implements section.Section.\nfunc (t *TestSection) SetIsSearching(val bool) tea.Cmd {\n\tpanic(\"unimplemented\")\n}\n\n// SetPromptConfirmationAction implements section.Section.\nfunc (t *TestSection) SetPromptConfirmationAction(action string) {\n\tpanic(\"unimplemented\")\n}\n\n// Update implements section.Section.\nfunc (t *TestSection) Update(msg tea.Msg) (section.Section, tea.Cmd) {\n\tpanic(\"unimplemented\")\n}\n\n// UpdateProgramContext implements section.Section.\nfunc (t *TestSection) UpdateProgramContext(ctx *context.ProgramContext) {\n\tpanic(\"unimplemented\")\n}\n\n// View implements section.Section.\nfunc (t *TestSection) View() string {\n\tpanic(\"unimplemented\")\n}\n"
  },
  {
    "path": "internal/tui/components/tasks/issue.go",
    "content": "package tasks\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype UpdateIssueMsg struct {\n\tIssueNumber      int\n\tLabels           *data.IssueLabels\n\tNewComment       *data.IssueComment\n\tIsClosed         *bool\n\tAddedAssignees   *data.Assignees\n\tRemovedAssignees *data.Assignees\n}\n\nfunc CloseIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: fmt.Sprintf(\"issue_close_%d\", issueNumber),\n\t\tArgs: []string{\n\t\t\t\"issue\",\n\t\t\t\"close\",\n\t\t\tfmt.Sprint(issueNumber),\n\t\t\t\"-R\",\n\t\t\tissue.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Closing issue #%d\", issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been closed\", issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tIsClosed:    utils.BoolPtr(true),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc ReopenIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: fmt.Sprintf(\"issue_reopen_%d\", issueNumber),\n\t\tArgs: []string{\n\t\t\t\"issue\",\n\t\t\t\"reopen\",\n\t\t\tfmt.Sprint(issueNumber),\n\t\t\t\"-R\",\n\t\t\tissue.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Reopening issue #%d\", issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been reopened\", issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tIsClosed:    utils.BoolPtr(false),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc AssignIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n\tusernames []string,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\targs := []string{\n\t\t\"issue\",\n\t\t\"edit\",\n\t\tfmt.Sprint(issueNumber),\n\t\t\"-R\",\n\t\tissue.GetRepoNameWithOwner(),\n\t}\n\tfor _, assignee := range usernames {\n\t\targs = append(args, \"--add-assignee\", assignee)\n\t}\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           fmt.Sprintf(\"issue_assign_%d\", issueNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Assigning issue #%d to %s\", issueNumber, usernames),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been assigned to %s\", issueNumber, usernames),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturnedAssignees := data.Assignees{Nodes: []data.Assignee{}}\n\t\t\tfor _, assignee := range usernames {\n\t\t\t\treturnedAssignees.Nodes = append(\n\t\t\t\t\treturnedAssignees.Nodes,\n\t\t\t\t\tdata.Assignee{Login: assignee},\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber:    issueNumber,\n\t\t\t\tAddedAssignees: &returnedAssignees,\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc UnassignIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n\tusernames []string,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\targs := []string{\n\t\t\"issue\",\n\t\t\"edit\",\n\t\tfmt.Sprint(issueNumber),\n\t\t\"-R\",\n\t\tissue.GetRepoNameWithOwner(),\n\t}\n\tfor _, assignee := range usernames {\n\t\targs = append(args, \"--remove-assignee\", assignee)\n\t}\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           fmt.Sprintf(\"issue_unassign_%d\", issueNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Unassigning %s from issue #%d\", usernames, issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"%s unassigned from issue #%d\", usernames, issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturnedAssignees := data.Assignees{Nodes: []data.Assignee{}}\n\t\t\tfor _, assignee := range usernames {\n\t\t\t\treturnedAssignees.Nodes = append(\n\t\t\t\t\treturnedAssignees.Nodes,\n\t\t\t\t\tdata.Assignee{Login: assignee},\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber:      issueNumber,\n\t\t\t\tRemovedAssignees: &returnedAssignees,\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc CommentOnIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n\tbody string,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: fmt.Sprintf(\"issue_comment_%d\", issueNumber),\n\t\tArgs: []string{\n\t\t\t\"issue\",\n\t\t\t\"comment\",\n\t\t\tfmt.Sprint(issueNumber),\n\t\t\t\"-R\",\n\t\t\tissue.GetRepoNameWithOwner(),\n\t\t\t\"-b\",\n\t\t\tbody,\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Commenting on issue #%d\", issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"Commented on issue #%d\", issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tNewComment: &data.IssueComment{\n\t\t\t\t\tAuthor:    struct{ Login string }{Login: ctx.User},\n\t\t\t\t\tBody:      body,\n\t\t\t\t\tUpdatedAt: time.Now(),\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc LabelIssue(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tissue data.RowData,\n\tlabels []string,\n\texistingLabels []data.Label,\n) tea.Cmd {\n\tissueNumber := issue.GetNumber()\n\targs := []string{\n\t\t\"issue\",\n\t\t\"edit\",\n\t\tfmt.Sprint(issueNumber),\n\t\t\"-R\",\n\t\tissue.GetRepoNameWithOwner(),\n\t}\n\n\tlabelsMap := make(map[string]bool)\n\tfor _, label := range labels {\n\t\tlabelsMap[label] = true\n\t}\n\n\texistingLabelsColorMap := make(map[string]string)\n\tfor _, label := range existingLabels {\n\t\texistingLabelsColorMap[label.Name] = label.Color\n\t}\n\n\tfor _, label := range existingLabels {\n\t\tif _, ok := labelsMap[label.Name]; !ok {\n\t\t\targs = append(args, \"--remove-label\", label.Name)\n\t\t}\n\t}\n\n\tfor _, label := range labels {\n\t\targs = append(args, \"--add-label\", label)\n\t}\n\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           fmt.Sprintf(\"issue_label_%d\", issueNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Labeling issue #%d to %s\", issueNumber, labels),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been labeled with %s\", issueNumber, labels),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturnedLabels := data.IssueLabels{Nodes: []data.Label{}}\n\t\t\tfor _, label := range labels {\n\t\t\t\treturnedLabels.Nodes = append(returnedLabels.Nodes, data.Label{\n\t\t\t\t\tName:  label,\n\t\t\t\t\tColor: existingLabelsColorMap[label],\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tLabels:      &returnedLabels,\n\t\t\t}\n\t\t},\n\t})\n}\n"
  },
  {
    "path": "internal/tui/components/tasks/issue_test.go",
    "content": "package tasks\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"testing\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\n// mockIssue implements data.RowData for testing\ntype mockIssue struct {\n\tnumber    int\n\trepoName  string\n\ttitle     string\n\turl       string\n\tupdatedAt time.Time\n}\n\nfunc (m mockIssue) GetNumber() int               { return m.number }\nfunc (m mockIssue) GetRepoNameWithOwner() string { return m.repoName }\nfunc (m mockIssue) GetTitle() string             { return m.title }\nfunc (m mockIssue) GetUrl() string               { return m.url }\nfunc (m mockIssue) GetUpdatedAt() time.Time      { return m.updatedAt }\n\n// noopStartTask is a stub that returns nil for testing\nfunc noopStartTask(task context.Task) tea.Cmd {\n\treturn nil\n}\n\nfunc TestUpdateIssueMsg_Fields(t *testing.T) {\n\tt.Run(\"all fields can be set\", func(t *testing.T) {\n\t\tisClosed := true\n\t\tlabels := &data.IssueLabels{Nodes: []data.Label{{Name: \"bug\", Color: \"ff0000\"}}}\n\t\tcomment := &data.IssueComment{Body: \"test comment\"}\n\t\taddedAssignees := &data.Assignees{Nodes: []data.Assignee{{Login: \"user1\"}}}\n\t\tremovedAssignees := &data.Assignees{Nodes: []data.Assignee{{Login: \"user2\"}}}\n\n\t\tmsg := UpdateIssueMsg{\n\t\t\tIssueNumber:      123,\n\t\t\tLabels:           labels,\n\t\t\tNewComment:       comment,\n\t\t\tIsClosed:         &isClosed,\n\t\t\tAddedAssignees:   addedAssignees,\n\t\t\tRemovedAssignees: removedAssignees,\n\t\t}\n\n\t\trequire.Equal(t, 123, msg.IssueNumber)\n\t\trequire.Equal(t, labels, msg.Labels)\n\t\trequire.Equal(t, comment, msg.NewComment)\n\t\trequire.NotNil(t, msg.IsClosed)\n\t\trequire.True(t, *msg.IsClosed)\n\t\trequire.Equal(t, addedAssignees, msg.AddedAssignees)\n\t\trequire.Equal(t, removedAssignees, msg.RemovedAssignees)\n\t})\n\n\tt.Run(\"nil pointer fields are valid\", func(t *testing.T) {\n\t\tmsg := UpdateIssueMsg{\n\t\t\tIssueNumber: 456,\n\t\t}\n\n\t\trequire.Equal(t, 456, msg.IssueNumber)\n\t\trequire.Nil(t, msg.Labels)\n\t\trequire.Nil(t, msg.NewComment)\n\t\trequire.Nil(t, msg.IsClosed)\n\t\trequire.Nil(t, msg.AddedAssignees)\n\t\trequire.Nil(t, msg.RemovedAssignees)\n\t})\n}\n\nfunc TestCloseIssue(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tissueNumber int\n\t\trepoName    string\n\t}{\n\t\t{\n\t\t\tname:        \"closes issue with standard number\",\n\t\t\tissueNumber: 123,\n\t\t\trepoName:    \"owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname:        \"closes issue with large number\",\n\t\t\tissueNumber: 99999,\n\t\t\trepoName:    \"my-org/my-project\",\n\t\t},\n\t\t{\n\t\t\tname:        \"closes issue with hyphenated repo name\",\n\t\t\tissueNumber: 1,\n\t\t\trepoName:    \"some-owner/some-repo-name\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: 1, Type: \"issue\"}\n\t\t\tissue := mockIssue{\n\t\t\t\tnumber:   tt.issueNumber,\n\t\t\t\trepoName: tt.repoName,\n\t\t\t}\n\n\t\t\tcmd := CloseIssue(ctx, section, issue)\n\n\t\t\trequire.NotNil(t, cmd, \"CloseIssue should return a non-nil command\")\n\t\t})\n\t}\n}\n\nfunc TestCloseIssue_TaskConfiguration(t *testing.T) {\n\tvar capturedTask context.Task\n\n\tctx := &context.ProgramContext{\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\tcapturedTask = task\n\t\t\treturn nil\n\t\t},\n\t}\n\tsection := SectionIdentifier{Id: 5, Type: \"issue\"}\n\tissue := mockIssue{\n\t\tnumber:   42,\n\t\trepoName: \"test/repo\",\n\t}\n\n\t_ = CloseIssue(ctx, section, issue)\n\n\trequire.Equal(t, \"issue_close_42\", capturedTask.Id)\n\trequire.Equal(t, \"Closing issue #42\", capturedTask.StartText)\n\trequire.Equal(t, \"Issue #42 has been closed\", capturedTask.FinishedText)\n\trequire.Equal(t, context.TaskStart, capturedTask.State)\n\trequire.Nil(t, capturedTask.Error)\n}\n\nfunc TestReopenIssue(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tissueNumber int\n\t\trepoName    string\n\t}{\n\t\t{\n\t\t\tname:        \"reopens issue with standard number\",\n\t\t\tissueNumber: 123,\n\t\t\trepoName:    \"owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname:        \"reopens issue with large number\",\n\t\t\tissueNumber: 99999,\n\t\t\trepoName:    \"my-org/my-project\",\n\t\t},\n\t\t{\n\t\t\tname:        \"reopens issue with hyphenated repo name\",\n\t\t\tissueNumber: 1,\n\t\t\trepoName:    \"some-owner/some-repo-name\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: 1, Type: \"issue\"}\n\t\t\tissue := mockIssue{\n\t\t\t\tnumber:   tt.issueNumber,\n\t\t\t\trepoName: tt.repoName,\n\t\t\t}\n\n\t\t\tcmd := ReopenIssue(ctx, section, issue)\n\n\t\t\trequire.NotNil(t, cmd, \"ReopenIssue should return a non-nil command\")\n\t\t})\n\t}\n}\n\nfunc TestReopenIssue_TaskConfiguration(t *testing.T) {\n\tvar capturedTask context.Task\n\n\tctx := &context.ProgramContext{\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\tcapturedTask = task\n\t\t\treturn nil\n\t\t},\n\t}\n\tsection := SectionIdentifier{Id: 3, Type: \"issue\"}\n\tissue := mockIssue{\n\t\tnumber:   99,\n\t\trepoName: \"example/project\",\n\t}\n\n\t_ = ReopenIssue(ctx, section, issue)\n\n\trequire.Equal(t, \"issue_reopen_99\", capturedTask.Id)\n\trequire.Equal(t, \"Reopening issue #99\", capturedTask.StartText)\n\trequire.Equal(t, \"Issue #99 has been reopened\", capturedTask.FinishedText)\n\trequire.Equal(t, context.TaskStart, capturedTask.State)\n\trequire.Nil(t, capturedTask.Error)\n}\n\nfunc TestCloseIssue_SectionIdentifierPropagation(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tsectionId   int\n\t\tsectionType string\n\t}{\n\t\t{\n\t\t\tname:        \"issue section type\",\n\t\t\tsectionId:   1,\n\t\t\tsectionType: \"issue\",\n\t\t},\n\t\t{\n\t\t\tname:        \"notification section type\",\n\t\t\tsectionId:   10,\n\t\t\tsectionType: \"notification\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: tt.sectionId, Type: tt.sectionType}\n\t\t\tissue := mockIssue{number: 1, repoName: \"o/r\"}\n\n\t\t\tcmd := CloseIssue(ctx, section, issue)\n\n\t\t\trequire.NotNil(t, cmd)\n\t\t})\n\t}\n}\n\nfunc TestReopenIssue_SectionIdentifierPropagation(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tsectionId   int\n\t\tsectionType string\n\t}{\n\t\t{\n\t\t\tname:        \"issue section type\",\n\t\t\tsectionId:   1,\n\t\t\tsectionType: \"issue\",\n\t\t},\n\t\t{\n\t\t\tname:        \"notification section type\",\n\t\t\tsectionId:   10,\n\t\t\tsectionType: \"notification\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: tt.sectionId, Type: tt.sectionType}\n\t\t\tissue := mockIssue{number: 1, repoName: \"o/r\"}\n\n\t\t\tcmd := ReopenIssue(ctx, section, issue)\n\n\t\t\trequire.NotNil(t, cmd)\n\t\t})\n\t}\n}\n\nfunc TestUpdateIssueMsg_ImplementsTeaMsg(t *testing.T) {\n\t// Verify UpdateIssueMsg can be used as a tea.Msg\n\tvar msg tea.Msg = UpdateIssueMsg{IssueNumber: 1}\n\n\t_, ok := msg.(UpdateIssueMsg)\n\trequire.True(t, ok, \"UpdateIssueMsg should be usable as tea.Msg\")\n}\n\nfunc TestCloseIssue_UsesCorrectIssueNumber(t *testing.T) {\n\tissueNumbers := []int{1, 100, 12345, 999999}\n\n\tfor _, num := range issueNumbers {\n\t\tt.Run(fmt.Sprintf(\"issue_%d\", num), func(t *testing.T) {\n\t\t\tvar capturedTask context.Task\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\t\t\tcapturedTask = task\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t}\n\t\t\tissue := mockIssue{number: num, repoName: \"o/r\"}\n\n\t\t\tCloseIssue(ctx, SectionIdentifier{}, issue)\n\n\t\t\texpectedId := fmt.Sprintf(\"issue_close_%d\", num)\n\t\t\trequire.Equal(t, expectedId, capturedTask.Id)\n\t\t\trequire.Contains(t, capturedTask.StartText, fmt.Sprintf(\"#%d\", num))\n\t\t})\n\t}\n}\n\nfunc TestReopenIssue_UsesCorrectIssueNumber(t *testing.T) {\n\tissueNumbers := []int{1, 100, 12345, 999999}\n\n\tfor _, num := range issueNumbers {\n\t\tt.Run(fmt.Sprintf(\"issue_%d\", num), func(t *testing.T) {\n\t\t\tvar capturedTask context.Task\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\t\t\tcapturedTask = task\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t}\n\t\t\tissue := mockIssue{number: num, repoName: \"o/r\"}\n\n\t\t\tReopenIssue(ctx, SectionIdentifier{}, issue)\n\n\t\t\texpectedId := fmt.Sprintf(\"issue_reopen_%d\", num)\n\t\t\trequire.Equal(t, expectedId, capturedTask.Id)\n\t\t\trequire.Contains(t, capturedTask.StartText, fmt.Sprintf(\"#%d\", num))\n\t\t})\n\t}\n}\n\nfunc TestCloseIssue_MsgCallbackReturnsCorrectUpdateIssueMsg(t *testing.T) {\n\tissueNumber := 42\n\n\t// Create a GitHubTask directly to test the Msg callback\n\ttask := GitHubTask{\n\t\tId: fmt.Sprintf(\"issue_close_%d\", issueNumber),\n\t\tArgs: []string{\n\t\t\t\"issue\",\n\t\t\t\"close\",\n\t\t\tfmt.Sprint(issueNumber),\n\t\t\t\"-R\",\n\t\t\t\"owner/repo\",\n\t\t},\n\t\tSection:      SectionIdentifier{Id: 1, Type: \"issue\"},\n\t\tStartText:    fmt.Sprintf(\"Closing issue #%d\", issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been closed\", issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tIsClosed:    boolPtr(true),\n\t\t\t}\n\t\t},\n\t}\n\n\tmsg := task.Msg(nil, nil)\n\tupdateMsg, ok := msg.(UpdateIssueMsg)\n\n\trequire.True(t, ok, \"Msg should return UpdateIssueMsg\")\n\trequire.Equal(t, issueNumber, updateMsg.IssueNumber)\n\trequire.NotNil(t, updateMsg.IsClosed)\n\trequire.True(t, *updateMsg.IsClosed, \"IsClosed should be true for close action\")\n}\n\nfunc TestReopenIssue_MsgCallbackReturnsCorrectUpdateIssueMsg(t *testing.T) {\n\tissueNumber := 42\n\n\t// Create a GitHubTask directly to test the Msg callback\n\ttask := GitHubTask{\n\t\tId: fmt.Sprintf(\"issue_reopen_%d\", issueNumber),\n\t\tArgs: []string{\n\t\t\t\"issue\",\n\t\t\t\"reopen\",\n\t\t\tfmt.Sprint(issueNumber),\n\t\t\t\"-R\",\n\t\t\t\"owner/repo\",\n\t\t},\n\t\tSection:      SectionIdentifier{Id: 1, Type: \"issue\"},\n\t\tStartText:    fmt.Sprintf(\"Reopening issue #%d\", issueNumber),\n\t\tFinishedText: fmt.Sprintf(\"Issue #%d has been reopened\", issueNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdateIssueMsg{\n\t\t\t\tIssueNumber: issueNumber,\n\t\t\t\tIsClosed:    boolPtr(false),\n\t\t\t}\n\t\t},\n\t}\n\n\tmsg := task.Msg(nil, nil)\n\tupdateMsg, ok := msg.(UpdateIssueMsg)\n\n\trequire.True(t, ok, \"Msg should return UpdateIssueMsg\")\n\trequire.Equal(t, issueNumber, updateMsg.IssueNumber)\n\trequire.NotNil(t, updateMsg.IsClosed)\n\trequire.False(t, *updateMsg.IsClosed, \"IsClosed should be false for reopen action\")\n}\n\nfunc TestCloseIssue_CommandArgs(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tissueNumber  int\n\t\trepoName     string\n\t\texpectedArgs []string\n\t}{\n\t\t{\n\t\t\tname:        \"standard repo\",\n\t\t\tissueNumber: 123,\n\t\t\trepoName:    \"owner/repo\",\n\t\t\texpectedArgs: []string{\n\t\t\t\t\"issue\", \"close\", \"123\", \"-R\", \"owner/repo\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"org repo with hyphens\",\n\t\t\tissueNumber: 456,\n\t\t\trepoName:    \"my-org/my-repo-name\",\n\t\t\texpectedArgs: []string{\n\t\t\t\t\"issue\", \"close\", \"456\", \"-R\", \"my-org/my-repo-name\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttask := GitHubTask{\n\t\t\t\tArgs: []string{\n\t\t\t\t\t\"issue\",\n\t\t\t\t\t\"close\",\n\t\t\t\t\tfmt.Sprint(tt.issueNumber),\n\t\t\t\t\t\"-R\",\n\t\t\t\t\ttt.repoName,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.expectedArgs, task.Args)\n\t\t})\n\t}\n}\n\nfunc TestReopenIssue_CommandArgs(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tissueNumber  int\n\t\trepoName     string\n\t\texpectedArgs []string\n\t}{\n\t\t{\n\t\t\tname:        \"standard repo\",\n\t\t\tissueNumber: 123,\n\t\t\trepoName:    \"owner/repo\",\n\t\t\texpectedArgs: []string{\n\t\t\t\t\"issue\", \"reopen\", \"123\", \"-R\", \"owner/repo\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"org repo with hyphens\",\n\t\t\tissueNumber: 456,\n\t\t\trepoName:    \"my-org/my-repo-name\",\n\t\t\texpectedArgs: []string{\n\t\t\t\t\"issue\", \"reopen\", \"456\", \"-R\", \"my-org/my-repo-name\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttask := GitHubTask{\n\t\t\t\tArgs: []string{\n\t\t\t\t\t\"issue\",\n\t\t\t\t\t\"reopen\",\n\t\t\t\t\tfmt.Sprint(tt.issueNumber),\n\t\t\t\t\t\"-R\",\n\t\t\t\t\ttt.repoName,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.expectedArgs, task.Args)\n\t\t})\n\t}\n}\n\n// boolPtr is a helper to create a pointer to a bool\nfunc boolPtr(b bool) *bool {\n\treturn &b\n}\n"
  },
  {
    "path": "internal/tui/components/tasks/pr.go",
    "content": "package tasks\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype SectionIdentifier struct {\n\tId   int\n\tType string\n}\n\ntype UpdatePRMsg struct {\n\tPrNumber         int\n\tIsClosed         *bool\n\tNewComment       *data.Comment\n\tReadyForReview   *bool\n\tIsMerged         *bool\n\tAddedAssignees   *data.Assignees\n\tRemovedAssignees *data.Assignees\n}\n\ntype UpdateBranchMsg struct {\n\tName      string\n\tIsCreated *bool\n\tNewPr     *data.PullRequestData\n}\n\nfunc buildTaskId(prefix string, prNumber int) string {\n\treturn fmt.Sprintf(\"%s_%d\", prefix, prNumber)\n}\n\ntype GitHubTask struct {\n\tId           string\n\tArgs         []string\n\tSection      SectionIdentifier\n\tStartText    string\n\tFinishedText string\n\tMsg          func(c *exec.Cmd, err error) tea.Msg\n}\n\nfunc fireTask(ctx *context.ProgramContext, task GitHubTask) tea.Cmd {\n\tstart := context.Task{\n\t\tId:           task.Id,\n\t\tStartText:    task.StartText,\n\t\tFinishedText: task.FinishedText,\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\n\tstartCmd := ctx.StartTask(start)\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\tlog.Info(\"Running task\", \"cmd\", \"gh \"+strings.Join(task.Args, \" \"))\n\t\tc := exec.Command(\"gh\", task.Args...)\n\n\t\terr := c.Run()\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tTaskId:      task.Id,\n\t\t\tSectionId:   task.Section.Id,\n\t\t\tSectionType: task.Section.Type,\n\t\t\tErr:         err,\n\t\t\tMsg:         task.Msg(c, err),\n\t\t}\n\t})\n}\n\nfunc OpenBranchPR(ctx *context.ProgramContext, section SectionIdentifier, branch string) tea.Cmd {\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: fmt.Sprintf(\"branch_open_%s\", branch),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"view\",\n\t\t\t\"--web\",\n\t\t\tbranch,\n\t\t\t\"-R\",\n\t\t\tctx.RepoUrl,\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Opening PR for branch %s\", branch),\n\t\tFinishedText: fmt.Sprintf(\"PR for branch %s has been opened\", branch),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{}\n\t\t},\n\t})\n}\n\nfunc ReopenPR(ctx *context.ProgramContext, section SectionIdentifier, pr data.RowData) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: buildTaskId(\"pr_reopen\", prNumber),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"reopen\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\tpr.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Reopening PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been reopened\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t\tIsClosed: utils.BoolPtr(false),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc ClosePR(ctx *context.ProgramContext, section SectionIdentifier, pr data.RowData) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: buildTaskId(\"pr_close\", prNumber),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"close\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\tpr.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Closing PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been closed\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t\tIsClosed: utils.BoolPtr(true),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc PRReady(ctx *context.ProgramContext, section SectionIdentifier, pr data.RowData) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: buildTaskId(\"pr_ready\", prNumber),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"ready\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\tpr.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Marking PR #%d as ready for review\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been marked as ready for review\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber:       prNumber,\n\t\t\t\tReadyForReview: utils.BoolPtr(true),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc MergePR(ctx *context.ProgramContext, section SectionIdentifier, pr data.RowData) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\tc := exec.Command(\n\t\t\"gh\",\n\t\t\"pr\",\n\t\t\"merge\",\n\t\tfmt.Sprint(prNumber),\n\t\t\"-R\",\n\t\tpr.GetRepoNameWithOwner(),\n\t)\n\n\ttaskId := fmt.Sprintf(\"merge_%d\", prNumber)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Merging PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been merged\", prNumber),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := ctx.StartTask(task)\n\n\treturn tea.Batch(startCmd, tea.ExecProcess(c, func(err error) tea.Msg {\n\t\tisMerged := err == nil && c.ProcessState.ExitCode() == 0\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   section.Id,\n\t\t\tSectionType: section.Type,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         err,\n\t\t\tMsg: UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t\tIsMerged: &isMerged,\n\t\t\t},\n\t\t}\n\t}))\n}\n\nfunc CreatePR(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tbranchName string,\n\ttitle string,\n) tea.Cmd {\n\tc := exec.Command(\n\t\t\"gh\",\n\t\t\"pr\",\n\t\t\"create\",\n\t\t\"--title\",\n\t\ttitle,\n\t\t\"-R\",\n\t\tctx.RepoUrl,\n\t)\n\n\ttaskId := fmt.Sprintf(\"create_pr_%s\", title)\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(`Creating PR \"%s\"`, title),\n\t\tFinishedText: fmt.Sprintf(`PR \"%s\" has been created`, title),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := ctx.StartTask(task)\n\n\treturn tea.Batch(startCmd, tea.ExecProcess(c, func(err error) tea.Msg {\n\t\tisCreated := err == nil && c.ProcessState.ExitCode() == 0\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tSectionId:   section.Id,\n\t\t\tSectionType: section.Type,\n\t\t\tTaskId:      taskId,\n\t\t\tErr:         nil,\n\t\t\tMsg:         UpdateBranchMsg{Name: branchName, IsCreated: &isCreated},\n\t\t}\n\t}))\n}\n\nfunc UpdatePR(ctx *context.ProgramContext, section SectionIdentifier, pr data.RowData) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: buildTaskId(\"pr_update\", prNumber),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"update-branch\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\tpr.GetRepoNameWithOwner(),\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Updating PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"PR #%d has been updated\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t\tIsClosed: utils.BoolPtr(true),\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc AssignPR(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tpr data.RowData,\n\tusernames []string,\n) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\targs := []string{\n\t\t\"pr\",\n\t\t\"edit\",\n\t\tfmt.Sprint(prNumber),\n\t\t\"-R\",\n\t\tpr.GetRepoNameWithOwner(),\n\t}\n\tfor _, assignee := range usernames {\n\t\targs = append(args, \"--add-assignee\", assignee)\n\t}\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           buildTaskId(\"pr_assign\", prNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Assigning pr #%d to %s\", prNumber, usernames),\n\t\tFinishedText: fmt.Sprintf(\"pr #%d has been assigned to %s\", prNumber, usernames),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturnedAssignees := data.Assignees{Nodes: []data.Assignee{}}\n\t\t\tfor _, assignee := range usernames {\n\t\t\t\treturnedAssignees.Nodes = append(\n\t\t\t\t\treturnedAssignees.Nodes,\n\t\t\t\t\tdata.Assignee{Login: assignee},\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber:       prNumber,\n\t\t\t\tAddedAssignees: &returnedAssignees,\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc UnassignPR(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tpr data.RowData,\n\tusernames []string,\n) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\targs := []string{\n\t\t\"pr\",\n\t\t\"edit\",\n\t\tfmt.Sprint(prNumber),\n\t\t\"-R\",\n\t\tpr.GetRepoNameWithOwner(),\n\t}\n\tfor _, assignee := range usernames {\n\t\targs = append(args, \"--remove-assignee\", assignee)\n\t}\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           buildTaskId(\"pr_unassign\", prNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Unassigning %s from pr #%d\", usernames, prNumber),\n\t\tFinishedText: fmt.Sprintf(\"%s unassigned from pr #%d\", usernames, prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturnedAssignees := data.Assignees{Nodes: []data.Assignee{}}\n\t\t\tfor _, assignee := range usernames {\n\t\t\t\treturnedAssignees.Nodes = append(\n\t\t\t\t\treturnedAssignees.Nodes,\n\t\t\t\t\tdata.Assignee{Login: assignee},\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber:         prNumber,\n\t\t\t\tRemovedAssignees: &returnedAssignees,\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc CommentOnPR(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tpr data.RowData,\n\tbody string,\n) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\treturn fireTask(ctx, GitHubTask{\n\t\tId: buildTaskId(\"pr_comment\", prNumber),\n\t\tArgs: []string{\n\t\t\t\"pr\",\n\t\t\t\"comment\",\n\t\t\tfmt.Sprint(prNumber),\n\t\t\t\"-R\",\n\t\t\tpr.GetRepoNameWithOwner(),\n\t\t\t\"-b\",\n\t\t\tbody,\n\t\t},\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Commenting on PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"Commented on PR #%d\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t\tNewComment: &data.Comment{\n\t\t\t\t\tAuthor:    struct{ Login string }{Login: ctx.User},\n\t\t\t\t\tBody:      body,\n\t\t\t\t\tUpdatedAt: time.Now(),\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc ApprovePR(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tpr data.RowData,\n\tcomment string,\n) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\targs := []string{\n\t\t\"pr\",\n\t\t\"review\",\n\t\t\"-R\",\n\t\tpr.GetRepoNameWithOwner(),\n\t\tfmt.Sprint(prNumber),\n\t\t\"--approve\",\n\t}\n\tif comment != \"\" {\n\t\targs = append(args, \"--body\", comment)\n\t}\n\treturn fireTask(ctx, GitHubTask{\n\t\tId:           buildTaskId(\"pr_approve\", prNumber),\n\t\tArgs:         args,\n\t\tSection:      section,\n\t\tStartText:    fmt.Sprintf(\"Approving pr #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"pr #%d has been approved\", prNumber),\n\t\tMsg: func(c *exec.Cmd, err error) tea.Msg {\n\t\t\treturn UpdatePRMsg{\n\t\t\t\tPrNumber: prNumber,\n\t\t\t}\n\t\t},\n\t})\n}\n\nfunc ApproveWorkflows(\n\tctx *context.ProgramContext,\n\tsection SectionIdentifier,\n\tpr data.RowData,\n) tea.Cmd {\n\tprNumber := pr.GetNumber()\n\trepo := pr.GetRepoNameWithOwner()\n\ttaskId := buildTaskId(\"pr_approve_workflows\", prNumber)\n\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    fmt.Sprintf(\"Approving workflows for PR #%d\", prNumber),\n\t\tFinishedText: fmt.Sprintf(\"Workflows for PR #%d have been approved\", prNumber),\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := ctx.StartTask(task)\n\n\treturn tea.Batch(startCmd, func() tea.Msg {\n\t\t// Step 1: Get head SHA\n\t\tshaCmd := exec.Command(\"gh\", \"pr\", \"view\", fmt.Sprint(prNumber),\n\t\t\t\"-R\", repo, \"--json\", \"headRefOid\", \"--jq\", \".headRefOid\")\n\t\tshaOut, err := shaCmd.Output()\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tSectionId:   section.Id,\n\t\t\t\tSectionType: section.Type,\n\t\t\t\tErr:         fmt.Errorf(\"failed to get head SHA: %w\", err),\n\t\t\t\tMsg:         UpdatePRMsg{PrNumber: prNumber},\n\t\t\t}\n\t\t}\n\t\tsha := strings.TrimSpace(string(shaOut))\n\n\t\t// Step 2: Get workflow run IDs awaiting approval\n\t\trunsCmd := exec.Command(\"gh\", \"api\",\n\t\t\tfmt.Sprintf(\"repos/%s/actions/runs?status=action_required&head_sha=%s\", repo, sha),\n\t\t\t\"--jq\", \".workflow_runs[].id\")\n\t\trunsOut, err := runsCmd.Output()\n\t\tif err != nil {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tSectionId:   section.Id,\n\t\t\t\tSectionType: section.Type,\n\t\t\t\tErr:         fmt.Errorf(\"failed to get workflow runs: %w\", err),\n\t\t\t\tMsg:         UpdatePRMsg{PrNumber: prNumber},\n\t\t\t}\n\t\t}\n\n\t\trunIds := strings.Fields(strings.TrimSpace(string(runsOut)))\n\t\tif len(runIds) == 0 {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tTaskId:      taskId,\n\t\t\t\tSectionId:   section.Id,\n\t\t\t\tSectionType: section.Type,\n\t\t\t\tErr:         fmt.Errorf(\"no workflows awaiting approval\"),\n\t\t\t\tMsg:         UpdatePRMsg{PrNumber: prNumber},\n\t\t\t}\n\t\t}\n\n\t\t// Step 3: Approve each run (best-effort)\n\t\tvar lastErr error\n\t\tapproved := 0\n\t\tfor _, runId := range runIds {\n\t\t\tlog.Info(\"Approving workflow run\", \"runId\", runId, \"pr\", prNumber)\n\t\t\tapproveCmd := exec.Command(\"gh\", \"api\", \"-X\", \"POST\",\n\t\t\t\tfmt.Sprintf(\"repos/%s/actions/runs/%s/approve\", repo, runId))\n\t\t\toutput, err := approveCmd.CombinedOutput()\n\t\t\tif err != nil {\n\t\t\t\toutStr := string(output)\n\t\t\t\tif strings.Contains(outStr, \"not from a fork pull request\") {\n\t\t\t\t\tlastErr = fmt.Errorf(\n\t\t\t\t\t\t\"workflow not approvable via API (only fork PR workflows can be approved)\",\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tlastErr = fmt.Errorf(\"failed to approve run %s: %w\", runId, err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tapproved++\n\t\t\t}\n\t\t}\n\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tTaskId:      taskId,\n\t\t\tSectionId:   section.Id,\n\t\t\tSectionType: section.Type,\n\t\t\tErr:         lastErr,\n\t\t\tMsg:         UpdatePRMsg{PrNumber: prNumber},\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/tui/components/tasks/pr_test.go",
    "content": "package tasks\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc TestApproveWorkflows_TaskConfiguration(t *testing.T) {\n\tvar capturedTask context.Task\n\n\tctx := &context.ProgramContext{\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\tcapturedTask = task\n\t\t\treturn nil\n\t\t},\n\t}\n\tsection := SectionIdentifier{Id: 2, Type: \"pr\"}\n\tpr := mockIssue{\n\t\tnumber:   42,\n\t\trepoName: \"owner/repo\",\n\t}\n\n\t_ = ApproveWorkflows(ctx, section, pr)\n\n\trequire.Equal(t, \"pr_approve_workflows_42\", capturedTask.Id)\n\trequire.Equal(t, \"Approving workflows for PR #42\", capturedTask.StartText)\n\trequire.Equal(t, \"Workflows for PR #42 have been approved\", capturedTask.FinishedText)\n\trequire.Equal(t, context.TaskStart, capturedTask.State)\n\trequire.Nil(t, capturedTask.Error)\n}\n\nfunc TestApproveWorkflows_ReturnsNonNilCommand(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tprNumber int\n\t\trepoName string\n\t}{\n\t\t{\n\t\t\tname:     \"standard PR\",\n\t\t\tprNumber: 123,\n\t\t\trepoName: \"owner/repo\",\n\t\t},\n\t\t{\n\t\t\tname:     \"large PR number\",\n\t\t\tprNumber: 99999,\n\t\t\trepoName: \"my-org/my-project\",\n\t\t},\n\t\t{\n\t\t\tname:     \"hyphenated repo name\",\n\t\t\tprNumber: 1,\n\t\t\trepoName: \"some-owner/some-repo-name\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: 1, Type: \"pr\"}\n\t\t\tpr := mockIssue{\n\t\t\t\tnumber:   tt.prNumber,\n\t\t\t\trepoName: tt.repoName,\n\t\t\t}\n\n\t\t\tcmd := ApproveWorkflows(ctx, section, pr)\n\n\t\t\trequire.NotNil(t, cmd, \"ApproveWorkflows should return a non-nil command\")\n\t\t})\n\t}\n}\n\nfunc TestApproveWorkflows_UsesCorrectPRNumber(t *testing.T) {\n\tprNumbers := []int{1, 100, 12345, 999999}\n\n\tfor _, num := range prNumbers {\n\t\tt.Run(fmt.Sprintf(\"pr_%d\", num), func(t *testing.T) {\n\t\t\tvar capturedTask context.Task\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\t\t\tcapturedTask = task\n\t\t\t\t\treturn nil\n\t\t\t\t},\n\t\t\t}\n\t\t\tpr := mockIssue{number: num, repoName: \"o/r\"}\n\n\t\t\tApproveWorkflows(ctx, SectionIdentifier{}, pr)\n\n\t\t\texpectedId := fmt.Sprintf(\"pr_approve_workflows_%d\", num)\n\t\t\trequire.Equal(t, expectedId, capturedTask.Id)\n\t\t\trequire.Contains(t, capturedTask.StartText, fmt.Sprintf(\"#%d\", num))\n\t\t\trequire.Contains(t, capturedTask.FinishedText, fmt.Sprintf(\"#%d\", num))\n\t\t})\n\t}\n}\n\nfunc TestApproveWorkflows_SectionIdentifierPropagation(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tsectionId   int\n\t\tsectionType string\n\t}{\n\t\t{\n\t\t\tname:        \"pr section type\",\n\t\t\tsectionId:   1,\n\t\t\tsectionType: \"pr\",\n\t\t},\n\t\t{\n\t\t\tname:        \"notification section type\",\n\t\t\tsectionId:   10,\n\t\t\tsectionType: \"notification\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := &context.ProgramContext{\n\t\t\t\tStartTask: noopStartTask,\n\t\t\t}\n\t\t\tsection := SectionIdentifier{Id: tt.sectionId, Type: tt.sectionType}\n\t\t\tpr := mockIssue{number: 1, repoName: \"o/r\"}\n\n\t\t\tcmd := ApproveWorkflows(ctx, section, pr)\n\n\t\t\trequire.NotNil(t, cmd)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/tui/components/utils.go",
    "content": "package components\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc FormatNumber(num int) string {\n\tif num >= 1000000 {\n\t\tmillion := float64(num) / 1000000.0\n\t\treturn strconv.FormatFloat(million, 'f', 1, 64) + \"M\"\n\t} else if num >= 1000 {\n\t\tkilo := float64(num) / 1000.0\n\t\treturn strconv.FormatFloat(kilo, 'f', 1, 64) + \"k\"\n\t}\n\n\treturn strconv.Itoa(num)\n}\n\nfunc GetIssueTextStyle(\n\tctx *context.ProgramContext,\n) lipgloss.Style {\n\treturn lipgloss.NewStyle().Foreground(ctx.Theme.PrimaryText)\n}\n\nfunc RenderIssueTitle(\n\tctx *context.ProgramContext,\n\tstate string,\n\ttitle string,\n\tnumber int,\n) string {\n\tprNumber := \"\"\n\tif ctx.Config.Theme.Ui.Table.Compact {\n\t\tprNumber = fmt.Sprintf(\"#%d \", number)\n\t\tvar prNumberFg compat.AdaptiveColor\n\t\tif state != \"OPEN\" {\n\t\t\tprNumberFg = ctx.Theme.FaintText\n\t\t} else {\n\t\t\tprNumberFg = ctx.Theme.SecondaryText\n\t\t}\n\t\tprNumber = lipgloss.NewStyle().Foreground(prNumberFg).Render(prNumber)\n\t\t// TODO: hack - see issue https://github.com/charmbracelet/lipgloss/issues/144\n\t\t// Provide ability to prevent insertion of Reset sequence #144\n\t\tprNumber = strings.ReplaceAll(prNumber, \"\\x1b[0m\", \"\")\n\t\tprNumber = strings.ReplaceAll(prNumber, \"\\x1b[m\", \"\")\n\t}\n\n\trTitle := GetIssueTextStyle(ctx).Bold(true).Render(title)\n\n\tres := fmt.Sprintf(\"%s%s\", prNumber, rTitle)\n\treturn res\n}\n"
  },
  {
    "path": "internal/tui/constants/constants.go",
    "content": "package constants\n\nimport (\n\t\"charm.land/bubbles/v2/key\"\n)\n\ntype KeyMap struct {\n\tUp            key.Binding\n\tDown          key.Binding\n\tFirstItem     key.Binding\n\tLastItem      key.Binding\n\tTogglePreview key.Binding\n\tOpenGithub    key.Binding\n\tRefresh       key.Binding\n\tPageDown      key.Binding\n\tPageUp        key.Binding\n\tNextSection   key.Binding\n\tPrevSection   key.Binding\n\tHelp          key.Binding\n\tQuit          key.Binding\n}\n\ntype Dimensions struct {\n\tWidth  int\n\tHeight int\n}\n\nconst (\n\tEllipsis = \"…\"\n\n\tApprovedIcon         = \"󰄬\"\n\tChangesRequestedIcon = \"\"\n\tDotIcon              = \"\"\n\tSmallDotIcon         = \"⋅\"\n\tHorizontalLineIcon   = \"─\"\n\tEmptyIcon            = \"\"\n\tFailureIcon          = \"󰅙\"\n\tPersonIcon           = \"\"\n\tSuccessIcon          = \"\"\n\tTeamIcon             = \"\"\n\tWaitingIcon          = \"\"\n\tActionRequiredIcon   = \"\" // nf-cod-warning (matches GitHub UI)\n\n\tBehindIcon         = \"󰇮\"\n\tBlockedIcon        = \"\"\n\tClosedIcon         = \"\"\n\tCodeReviewIcon     = \"\"\n\tCommentIcon        = \"\"\n\tCommentsIcon       = \"\"\n\tDonateIcon         = \"󱃱\"\n\tDraftIcon          = \"\"\n\tCommitIcon         = \"\"\n\tVerticalCommitIcon = \"󰜘\"\n\tLabelsIcon         = \"󰌖\"\n\tMergedIcon         = \"\"\n\tMergeQueueIcon     = \"\" // \\uf4db nf-oct-git_merge_queue\n\tOpenIcon           = \"\"\n\tSelectionIcon      = \"❯\"\n\n\t// New contributors: users who created a PR for the repo for the first time\n\tNewContributorIcon = \"󰎔\" // \\udb80\\udf94 nf-md-new_box\n\n\t// Contributors: everyone who has contributed something back to the project\n\tContributorIcon = \"\" // \\uedc6 nf-fa-user_check\n\n\t// Collaborator is a person who isn't explicitly a member of your organization,\n\t// but who has Read, Write, or Admin permissions to one or more repositories in your organization.\n\tCollaboratorIcon = \"\" // \\uedcf nf-fa-user_shield\n\n\t// A member of the organization\n\tMemberIcon = \"\" // \\uf42b nf-oct-organization\n\n\t// The person/s who has administrative ownership over the organization or repository (not always the same as the original author)\n\tOwnerIcon = \"\" // \\uf511 nf-oct-shield_lock\n\n\tUnknownRoleIcon = \"󰭙\" // \\udb82\\udf59 nf-md-account_question\n\n\t// Notification type icons\n\tWorkflowIcon     = \"\" // \\uf52e nf-oct-checklist (for CheckSuite/CI)\n\tWorkflowRunIcon  = \"\" // \\uebd6 nf-cod-workflow (for CheckSuite default)\n\tSecurityIcon     = \"󰒃\" // \\udb80\\udc83 nf-md-shield_alert (for security alerts)\n\tNotificationIcon = \"\" // \\ueaa2 nf-cod-bell (generic notification fallback)\n\tSearchIcon       = \"\" // \\uf002 nf-fa-search\n\n\t// Prompts\n\tAssignPrompt   = \"Assign users (whitespace-separated)\" + Ellipsis\n\tUnassignPrompt = \"Unassign users (whitespace-separated)\" + Ellipsis\n\tCommentPrompt  = \"Leave a comment\" + Ellipsis\n\tApprovalPrompt = \"Approve with comment\" + Ellipsis\n\tLabelPrompt    = \"Add/remove labels (comma-separated)\" + Ellipsis\n\n\tLogo = `▜▔▚▐▔▌▚▔▐ ▌\n▟▁▞▐▔▌▁▚▐▔▌`\n)\n"
  },
  {
    "path": "internal/tui/constants/errMsg.go",
    "content": "package constants\n\ntype ErrMsg struct {\n\tErr error\n}\n\nfunc (e ErrMsg) Error() string { return e.Err.Error() }\n"
  },
  {
    "path": "internal/tui/constants/initMsg.go",
    "content": "package constants\n\nimport \"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\ntype InitMsg struct {\n\tConfig config.Config\n}\n"
  },
  {
    "path": "internal/tui/constants/progressMsg.go",
    "content": "package constants\n\nimport tea \"charm.land/bubbletea/v2\"\n\ntype TaskFinishedMsg struct {\n\tTaskId      string\n\tSectionId   int\n\tSectionType string\n\tErr         error\n\tMsg         tea.Msg\n}\n\ntype ClearTaskMsg struct {\n\tTaskId string\n}\n"
  },
  {
    "path": "internal/tui/context/context.go",
    "content": "package context\n\nimport (\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/utils\"\n)\n\ntype State = int\n\nconst (\n\tTaskStart State = iota\n\tTaskFinished\n\tTaskError\n)\n\ntype Task struct {\n\tId           string\n\tStartText    string\n\tFinishedText string\n\tState        State\n\tError        error\n\tStartTime    time.Time\n\tFinishedTime *time.Time\n}\n\ntype ProgramContext struct {\n\tRepoPath            string\n\tRepoUrl             string\n\tUser                string\n\tScreenHeight        int\n\tScreenWidth         int\n\tMainContentWidth    int\n\tMainContentHeight   int\n\tDynamicPreviewWidth int\n\tSidebarOpen         bool\n\tConfig              *config.Config\n\tConfigFlag          string\n\tVersion             string\n\tView                config.ViewType\n\tError               error\n\tStartTask           func(task Task) tea.Cmd\n\tTheme               theme.Theme\n\tStyles              Styles\n}\n\nfunc (ctx *ProgramContext) GetViewSectionsConfig() []config.SectionConfig {\n\tvar configs []config.SectionConfig\n\tswitch ctx.View {\n\tcase config.RepoView:\n\t\tt := config.RepoView\n\t\tconfigs = append(configs, config.PrsSectionConfig{\n\t\t\tTitle:   \"Local Branches\",\n\t\t\tFilters: \"author:@me is:open\",\n\t\t\tLimit:   utils.IntPtr(20),\n\t\t\tType:    &t,\n\t\t}.ToSectionConfig())\n\tcase config.NotificationsView:\n\t\tfor _, cfg := range ctx.Config.NotificationsSections {\n\t\t\tconfigs = append(configs, cfg.ToSectionConfig())\n\t\t}\n\tcase config.PRsView:\n\t\tfor _, cfg := range ctx.Config.PRSections {\n\t\t\tconfigs = append(configs, cfg.ToSectionConfig())\n\t\t}\n\tcase config.IssuesView:\n\t\tfor _, cfg := range ctx.Config.IssuesSections {\n\t\t\tconfigs = append(configs, cfg.ToSectionConfig())\n\t\t}\n\t}\n\n\treturn append([]config.SectionConfig{{Title: \"\"}}, configs...)\n}\n"
  },
  {
    "path": "internal/tui/context/styles.go",
    "content": "package context\n\nimport (\n\tbbHelp \"charm.land/bubbles/v2/help\"\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\ntype Styles struct {\n\tColors struct {\n\t\tOpenIssue   compat.AdaptiveColor\n\t\tClosedIssue compat.AdaptiveColor\n\t\tSuccessText compat.AdaptiveColor\n\t\tOpenPR      compat.AdaptiveColor\n\t\tClosedPR    compat.AdaptiveColor\n\t\tMergedPR    compat.AdaptiveColor\n\t}\n\n\tCommon common.CommonStyles\n\n\tPrView struct {\n\t\tPillStyle lipgloss.Style\n\t}\n\tHelp struct {\n\t\tText         lipgloss.Style\n\t\tKeyText      lipgloss.Style\n\t\tBubbleStyles bbHelp.Styles\n\t}\n\tCommentBox struct {\n\t\tText lipgloss.Style\n\t}\n\tPager struct {\n\t\tHeight int\n\t\tRoot   lipgloss.Style\n\t}\n\tSection struct {\n\t\tContainerPadding int\n\t\tContainerStyle   lipgloss.Style\n\t\tSpinnerStyle     lipgloss.Style\n\t\tEmptyStateStyle  lipgloss.Style\n\t\tKeyStyle         lipgloss.Style\n\t}\n\tPrSection struct {\n\t\tCiCellWidth        int\n\t\tLinesCellWidth     int\n\t\tUpdatedAtCellWidth int\n\t\tPrRepoCellWidth    int\n\t\tPrAuthorCellWidth  int\n\t}\n\tSidebar struct {\n\t\tBorderWidth    int\n\t\tPagerHeight    int\n\t\tContentPadding int\n\t\tRoot           lipgloss.Style\n\t\tPagerStyle     lipgloss.Style\n\t}\n\tListViewPort struct {\n\t\tPagerStyle lipgloss.Style\n\t}\n\tTable struct {\n\t\tCellStyle                lipgloss.Style\n\t\tSelectedCellStyle        lipgloss.Style\n\t\tTitleCellStyle           lipgloss.Style\n\t\tSingleRuneTitleCellStyle lipgloss.Style\n\t\tHeaderStyle              lipgloss.Style\n\t\tRowStyle                 lipgloss.Style\n\t}\n\tTabs struct {\n\t\tTab               lipgloss.Style\n\t\tActiveTab         lipgloss.Style\n\t\tOverflowIndicator lipgloss.Style\n\t\tTabSeparator      lipgloss.Style\n\t\tTabsRow           lipgloss.Style\n\t}\n\tViewSwitcher struct {\n\t\tActiveView     lipgloss.Style\n\t\tInactiveView   lipgloss.Style\n\t\tRoot           lipgloss.Style\n\t\tViewsSeparator lipgloss.Style\n\t}\n\tAutocomplete struct {\n\t\tPopupStyle    lipgloss.Style\n\t\tSelectedStyle lipgloss.Style\n\t}\n}\n\nvar LogoColor = lipgloss.Color(\"#00F9FB\")\n\nfunc InitStyles(theme theme.Theme) Styles {\n\tvar s Styles\n\n\ts.Colors.OpenIssue = compat.AdaptiveColor{\n\t\tLight: lipgloss.Color(\"#42A0FA\"),\n\t\tDark:  lipgloss.Color(\"#42A0FA\"),\n\t}\n\ts.Colors.ClosedIssue = compat.AdaptiveColor{\n\t\tLight: lipgloss.Color(\"#C38080\"),\n\t\tDark:  lipgloss.Color(\"#C38080\"),\n\t}\n\ts.Colors.SuccessText = compat.AdaptiveColor{\n\t\tLight: lipgloss.Color(\"#3DF294\"),\n\t\tDark:  lipgloss.Color(\"#3DF294\"),\n\t}\n\ts.Colors.OpenPR = s.Colors.OpenIssue\n\ts.Colors.ClosedPR = compat.AdaptiveColor{\n\t\tLight: lipgloss.Color(\"#656C76\"),\n\t\tDark:  lipgloss.Color(\"#656C76\"),\n\t}\n\ts.Colors.MergedPR = compat.AdaptiveColor{\n\t\tLight: lipgloss.Color(\"#A371F7\"),\n\t\tDark:  lipgloss.Color(\"#A371F7\"),\n\t}\n\n\ts.Common = common.BuildStyles(theme)\n\n\ts.PrView.PillStyle = s.Common.MainTextStyle.\n\t\tBorder(lipgloss.Border{Left: \"\", Right: \"\"}, false, true, false, true).\n\t\tForeground(theme.InvertedText)\n\n\ts.Help.Text = lipgloss.NewStyle().Foreground(theme.SecondaryText)\n\ts.Help.KeyText = lipgloss.NewStyle().Foreground(theme.PrimaryText)\n\ts.Help.BubbleStyles = bbHelp.Styles{\n\t\tShortDesc:      s.Help.Text.Foreground(theme.FaintText),\n\t\tFullDesc:       s.Help.Text.Foreground(theme.FaintText),\n\t\tShortSeparator: s.Help.Text.Foreground(theme.SecondaryBorder),\n\t\tFullSeparator:  s.Help.Text,\n\t\tFullKey:        s.Help.KeyText,\n\t\tShortKey:       s.Help.KeyText,\n\t\tEllipsis:       s.Help.Text,\n\t}\n\n\ts.CommentBox.Text = s.Help.Text\n\n\ts.Pager.Height = 2\n\ts.Pager.Root = lipgloss.NewStyle().\n\t\tHeight(s.Pager.Height).\n\t\tMaxHeight(s.Pager.Height).\n\t\tPaddingTop(1).\n\t\tBold(true).\n\t\tForeground(theme.FaintText)\n\n\ts.Section.ContainerPadding = 1\n\ts.Section.ContainerStyle = lipgloss.NewStyle().\n\t\tPadding(0, s.Section.ContainerPadding)\n\ts.Section.SpinnerStyle = lipgloss.NewStyle().Padding(0, 1)\n\ts.Section.EmptyStateStyle = lipgloss.NewStyle().\n\t\tFaint(true).\n\t\tPaddingLeft(1).\n\t\tMarginBottom(1)\n\ts.Section.KeyStyle = lipgloss.NewStyle().\n\t\tForeground(theme.PrimaryText).\n\t\tBackground(theme.SelectedBackground).\n\t\tPadding(0, 1)\n\n\ts.PrSection.CiCellWidth = lipgloss.Width(\" CI \")\n\ts.PrSection.LinesCellWidth = lipgloss.Width(\" 123450 / -123450 \")\n\ts.PrSection.UpdatedAtCellWidth = lipgloss.Width(\"2mo  \")\n\ts.PrSection.PrRepoCellWidth = 15\n\ts.PrSection.PrAuthorCellWidth = 15\n\n\ts.Sidebar.PagerHeight = 1\n\ts.Sidebar.BorderWidth = 1\n\ts.Sidebar.ContentPadding = 2\n\ts.Sidebar.Root = lipgloss.NewStyle().\n\t\tBorderLeft(true).\n\t\tBorderStyle(lipgloss.Border{\n\t\t\tTop:         \"\",\n\t\t\tBottom:      \"\",\n\t\t\tLeft:        \"│\",\n\t\t\tRight:       \"\",\n\t\t\tTopLeft:     \"\",\n\t\t\tTopRight:    \"\",\n\t\t\tBottomRight: \"\",\n\t\t\tBottomLeft:  \"\",\n\t\t}).\n\t\tBorderForeground(theme.PrimaryBorder)\n\ts.Sidebar.PagerStyle = lipgloss.NewStyle().\n\t\tHeight(s.Sidebar.PagerHeight).\n\t\tBold(true).\n\t\tForeground(theme.FaintText)\n\n\ts.ListViewPort.PagerStyle = lipgloss.NewStyle().\n\t\tPadding(0, 1).\n\t\tBackground(theme.SelectedBackground).\n\t\tForeground(theme.FaintText)\n\n\ts.Table.CellStyle = lipgloss.NewStyle().PaddingLeft(1).\n\t\tPaddingRight(1).\n\t\tMaxHeight(1)\n\ts.Table.SelectedCellStyle = s.Table.CellStyle.\n\t\tBackground(theme.SelectedBackground)\n\ts.Table.TitleCellStyle = s.Table.CellStyle.\n\t\tBold(true).\n\t\tForeground(theme.PrimaryText)\n\ts.Table.SingleRuneTitleCellStyle = s.Table.TitleCellStyle.\n\t\tWidth(common.SingleRuneWidth)\n\ts.Table.HeaderStyle = lipgloss.NewStyle()\n\ts.Table.RowStyle = lipgloss.NewStyle().\n\t\tBorderStyle(lipgloss.NormalBorder()).\n\t\tBorderForeground(theme.FaintBorder)\n\n\ts.Tabs.Tab = lipgloss.NewStyle().\n\t\tFaint(true).\n\t\tPadding(0, 2)\n\ts.Tabs.ActiveTab = s.Tabs.Tab.\n\t\tFaint(false).\n\t\tBold(true).\n\t\tBackground(theme.SelectedBackground).\n\t\tForeground(theme.PrimaryText)\n\ts.Tabs.OverflowIndicator = s.Common.FaintTextStyle.Bold(true).Padding(0, 1)\n\ts.Tabs.TabSeparator = lipgloss.NewStyle().\n\t\tForeground(theme.SecondaryBorder)\n\ts.Tabs.TabsRow = lipgloss.NewStyle().\n\t\tHeight(common.TabsContentHeight).\n\t\tBorderBottom(true).\n\t\tBorderStyle(lipgloss.ThickBorder()).\n\t\tBorderBottomForeground(theme.PrimaryBorder)\n\ts.ViewSwitcher.Root = lipgloss.NewStyle().\n\t\tBackground(s.Common.FooterStyle.GetBackground()).\n\t\tForeground(theme.InvertedText).\n\t\tBold(true)\n\n\ts.ViewSwitcher.ActiveView = lipgloss.NewStyle().\n\t\tForeground(theme.PrimaryText).\n\t\tBold(true).\n\t\tBackground(theme.FaintBorder)\n\ts.ViewSwitcher.ViewsSeparator = lipgloss.NewStyle().\n\t\tBackground(theme.FaintBorder).\n\t\tForeground(theme.PrimaryBorder)\n\ts.ViewSwitcher.InactiveView = lipgloss.NewStyle().\n\t\tBackground(theme.FaintBorder).\n\t\tForeground(theme.FaintText)\n\ts.Autocomplete.PopupStyle = lipgloss.NewStyle().\n\t\tBorder(lipgloss.RoundedBorder()).\n\t\tBorderForeground(theme.SecondaryBorder).\n\t\tForeground(theme.PrimaryText)\n\n\ts.Autocomplete.SelectedStyle = lipgloss.NewStyle().\n\t\tBackground(theme.SelectedBackground).\n\t\tForeground(theme.PrimaryText).\n\t\tBold(true)\n\n\treturn s\n}\n"
  },
  {
    "path": "internal/tui/keys/branchKeys.go",
    "content": "package keys\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/key\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\ntype BranchKeyMap struct {\n\tCheckout    key.Binding\n\tNew         key.Binding\n\tCreatePr    key.Binding\n\tFastForward key.Binding\n\tPush        key.Binding\n\tForcePush   key.Binding\n\tDelete      key.Binding\n\tUpdatePr    key.Binding\n\tViewPRs     key.Binding\n}\n\nvar BranchKeys = BranchKeyMap{\n\tCheckout: key.NewBinding(\n\t\tkey.WithKeys(\"C\", \"space\"),\n\t\tkey.WithHelp(\"C/space\", \"checkout\"),\n\t),\n\tNew: key.NewBinding(\n\t\tkey.WithKeys(\"n\"),\n\t\tkey.WithHelp(\"n\", \"new\"),\n\t),\n\tCreatePr: key.NewBinding(\n\t\tkey.WithKeys(\"O\"),\n\t\tkey.WithHelp(\"O\", \"create PR\"),\n\t),\n\tFastForward: key.NewBinding(\n\t\tkey.WithKeys(\"f\"),\n\t\tkey.WithHelp(\"f\", \"fast-forward\"),\n\t),\n\tPush: key.NewBinding(\n\t\tkey.WithKeys(\"P\"),\n\t\tkey.WithHelp(\"P\", \"push\"),\n\t),\n\tForcePush: key.NewBinding(\n\t\tkey.WithKeys(\"F\"),\n\t\tkey.WithHelp(\"F\", \"force-push\"),\n\t),\n\tDelete: key.NewBinding(\n\t\tkey.WithKeys(\"d\", \"backspace\"),\n\t\tkey.WithHelp(\"d/backspace\", \"delete\"),\n\t),\n\tUpdatePr: key.NewBinding(\n\t\tkey.WithKeys(\"u\"),\n\t\tkey.WithHelp(\"u\", \"update PR\"),\n\t),\n\tViewPRs: key.NewBinding(\n\t\tkey.WithKeys(\"s\"),\n\t\tkey.WithHelp(\"s\", \"Switch to PRs\"),\n\t),\n}\n\nfunc BranchFullHelp() []key.Binding {\n\treturn []key.Binding{\n\t\tBranchKeys.Checkout,\n\t\tBranchKeys.FastForward,\n\t\tBranchKeys.Push,\n\t\tBranchKeys.ForcePush,\n\t\tBranchKeys.New,\n\t\tBranchKeys.CreatePr,\n\t\tBranchKeys.Delete,\n\t\tBranchKeys.UpdatePr,\n\t\tBranchKeys.ViewPRs,\n\t}\n}\n\nfunc rebindBranchKeys(keys []config.Keybinding) error {\n\tCustomBranchBindings = []key.Binding{}\n\n\tfor _, branchKey := range keys {\n\t\tif branchKey.Builtin == \"\" {\n\t\t\t// Handle custom commands\n\t\t\tif branchKey.Command != \"\" {\n\t\t\t\tname := branchKey.Name\n\t\t\t\tif branchKey.Name == \"\" {\n\t\t\t\t\tname = config.TruncateCommand(branchKey.Command)\n\t\t\t\t}\n\n\t\t\t\tcustomBinding := key.NewBinding(\n\t\t\t\t\tkey.WithKeys(branchKey.Key),\n\t\t\t\t\tkey.WithHelp(branchKey.Key, name),\n\t\t\t\t)\n\n\t\t\t\tCustomBranchBindings = append(CustomBranchBindings, customBinding)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debug(\"Rebinding branch key\", \"builtin\", branchKey.Builtin, \"key\", branchKey.Key)\n\n\t\tvar key *key.Binding\n\n\t\tswitch branchKey.Builtin {\n\t\tcase \"new\":\n\t\t\tkey = &BranchKeys.New\n\t\tcase \"createPr\":\n\t\t\tkey = &BranchKeys.CreatePr\n\t\tcase \"delete\":\n\t\t\tkey = &BranchKeys.Delete\n\t\tcase \"push\":\n\t\t\tkey = &BranchKeys.Push\n\t\tcase \"forcePush\":\n\t\t\tkey = &BranchKeys.ForcePush\n\t\tcase \"fastForward\":\n\t\t\tkey = &BranchKeys.FastForward\n\t\tcase \"checkout\":\n\t\t\tkey = &BranchKeys.Checkout\n\t\tcase \"viewPRs\":\n\t\t\tkey = &BranchKeys.ViewPRs\n\t\tcase \"updatePr\":\n\t\t\tkey = &BranchKeys.UpdatePr\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown built-in branch key: '%s'\", branchKey.Builtin)\n\t\t}\n\n\t\tkey.SetKeys(branchKey.Key)\n\n\t\thelpDesc := key.Help().Desc\n\t\tif branchKey.Name != \"\" {\n\t\t\thelpDesc = branchKey.Name\n\t\t}\n\t\tkey.SetHelp(branchKey.Key, helpDesc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/keys/issueKeys.go",
    "content": "package keys\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/key\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\ntype IssueKeyMap struct {\n\tLabel                key.Binding\n\tAssign               key.Binding\n\tUnassign             key.Binding\n\tComment              key.Binding\n\tClose                key.Binding\n\tReopen               key.Binding\n\tToggleSmartFiltering key.Binding\n\tViewPRs              key.Binding\n}\n\nvar IssueKeys = IssueKeyMap{\n\tLabel: key.NewBinding(\n\t\tkey.WithKeys(\"L\"),\n\t\tkey.WithHelp(\"L\", \"label\"),\n\t),\n\tAssign: key.NewBinding(\n\t\tkey.WithKeys(\"a\"),\n\t\tkey.WithHelp(\"a\", \"assign\"),\n\t),\n\tUnassign: key.NewBinding(\n\t\tkey.WithKeys(\"A\"),\n\t\tkey.WithHelp(\"A\", \"unassign\"),\n\t),\n\tComment: key.NewBinding(\n\t\tkey.WithKeys(\"c\"),\n\t\tkey.WithHelp(\"c\", \"comment\"),\n\t),\n\tClose: key.NewBinding(\n\t\tkey.WithKeys(\"x\"),\n\t\tkey.WithHelp(\"x\", \"close\"),\n\t),\n\tReopen: key.NewBinding(\n\t\tkey.WithKeys(\"X\"),\n\t\tkey.WithHelp(\"X\", \"reopen\"),\n\t),\n\tToggleSmartFiltering: key.NewBinding(\n\t\tkey.WithKeys(\"t\"),\n\t\tkey.WithHelp(\"t\", \"toggle smart filtering\"),\n\t),\n\tViewPRs: key.NewBinding(\n\t\tkey.WithKeys(\"s\"),\n\t\tkey.WithHelp(\"s\", \"switch to notifications\"),\n\t),\n}\n\nfunc IssueFullHelp() []key.Binding {\n\treturn []key.Binding{\n\t\tIssueKeys.Label,\n\t\tIssueKeys.Assign,\n\t\tIssueKeys.Unassign,\n\t\tIssueKeys.Comment,\n\t\tIssueKeys.Close,\n\t\tIssueKeys.Reopen,\n\t\tIssueKeys.ToggleSmartFiltering,\n\t\tIssueKeys.ViewPRs,\n\t}\n}\n\nfunc rebindIssueKeys(keys []config.Keybinding) error {\n\tCustomIssueBindings = []key.Binding{}\n\n\tfor _, issueKey := range keys {\n\t\tif issueKey.Builtin == \"\" {\n\t\t\t// Handle custom commands\n\t\t\tif issueKey.Command != \"\" {\n\t\t\t\tname := issueKey.Name\n\t\t\t\tif issueKey.Name == \"\" {\n\t\t\t\t\tname = config.TruncateCommand(issueKey.Command)\n\t\t\t\t}\n\n\t\t\t\tcustomBinding := key.NewBinding(\n\t\t\t\t\tkey.WithKeys(issueKey.Key),\n\t\t\t\t\tkey.WithHelp(issueKey.Key, name),\n\t\t\t\t)\n\n\t\t\t\tCustomIssueBindings = append(CustomIssueBindings, customBinding)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debug(\"Rebinding issue key\", \"builtin\", issueKey.Builtin, \"key\", issueKey.Key)\n\n\t\tvar key *key.Binding\n\n\t\tswitch issueKey.Builtin {\n\t\tcase \"label\":\n\t\t\tkey = &IssueKeys.Label\n\t\tcase \"assign\":\n\t\t\tkey = &IssueKeys.Assign\n\t\tcase \"unassign\":\n\t\t\tkey = &IssueKeys.Unassign\n\t\tcase \"comment\":\n\t\t\tkey = &IssueKeys.Comment\n\t\tcase \"close\":\n\t\t\tkey = &IssueKeys.Close\n\t\tcase \"reopen\":\n\t\t\tkey = &IssueKeys.Reopen\n\t\tcase \"viewPrs\":\n\t\t\tkey = &IssueKeys.ViewPRs\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown built-in issue key: '%s'\", issueKey.Builtin)\n\t\t}\n\n\t\tkey.SetKeys(issueKey.Key)\n\n\t\thelpDesc := key.Help().Desc\n\t\tif issueKey.Name != \"\" {\n\t\t\thelpDesc = issueKey.Name\n\t\t}\n\t\tkey.SetHelp(issueKey.Key, helpDesc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/keys/keys.go",
    "content": "package keys\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/help\"\n\t\"charm.land/bubbles/v2/key\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\n// NotificationSubjectType indicates what type of content is being viewed in the notifications view\ntype NotificationSubjectType int\n\nconst (\n\tNotificationSubjectNone NotificationSubjectType = iota\n\tNotificationSubjectPR\n\tNotificationSubjectIssue\n)\n\n// notificationSubject tracks the current notification subject type for help display\nvar notificationSubject NotificationSubjectType\n\n// SetNotificationSubject sets the current notification subject type for help display\nfunc SetNotificationSubject(subjectType NotificationSubjectType) {\n\tnotificationSubject = subjectType\n}\n\ntype KeyMap struct {\n\tviewType      config.ViewType\n\tUp            key.Binding\n\tDown          key.Binding\n\tFirstLine     key.Binding\n\tLastLine      key.Binding\n\tTogglePreview key.Binding\n\tOpenGithub    key.Binding\n\tRefresh       key.Binding\n\tRefreshAll    key.Binding\n\tRedraw        key.Binding\n\tPageDown      key.Binding\n\tPageUp        key.Binding\n\tNextSection   key.Binding\n\tPrevSection   key.Binding\n\tSearch        key.Binding\n\tCopyUrl       key.Binding\n\tCopyNumber    key.Binding\n\tHelp          key.Binding\n\tQuit          key.Binding\n}\n\nfunc CreateKeyMapForView(viewType config.ViewType) help.KeyMap {\n\tKeys.viewType = viewType\n\treturn Keys\n}\n\nfunc (k KeyMap) ShortHelp() []key.Binding {\n\treturn []key.Binding{k.Help}\n}\n\nfunc (k KeyMap) FullHelp() [][]key.Binding {\n\tvar additionalKeys []key.Binding\n\tvar customKeys []key.Binding\n\n\tif len(CustomUniversalBindings) > 0 {\n\t\tcustomKeys = append(customKeys, CustomUniversalBindings...)\n\t}\n\n\tswitch k.viewType {\n\tcase config.PRsView:\n\t\tadditionalKeys = PRFullHelp()\n\t\tcustomKeys = append(customKeys, CustomPRBindings...)\n\tcase config.RepoView:\n\t\tadditionalKeys = BranchFullHelp()\n\t\tcustomKeys = append(customKeys, CustomBranchBindings...)\n\tcase config.NotificationsView:\n\t\tadditionalKeys = NotificationFullHelp()\n\t\tcustomKeys = append(customKeys, CustomNotificationBindings...)\n\t\t// Include PR or Issue keys when viewing that subject type\n\t\tswitch notificationSubject {\n\t\tcase NotificationSubjectPR:\n\t\t\tadditionalKeys = append(additionalKeys, PRFullHelp()...)\n\t\t\tcustomKeys = append(customKeys, CustomPRBindings...)\n\t\tcase NotificationSubjectIssue:\n\t\t\tadditionalKeys = append(additionalKeys, IssueFullHelp()...)\n\t\t\tcustomKeys = append(customKeys, CustomIssueBindings...)\n\t\t}\n\tdefault:\n\t\tadditionalKeys = IssueFullHelp()\n\t\tcustomKeys = append(customKeys, CustomIssueBindings...)\n\t}\n\n\tsections := [][]key.Binding{\n\t\tk.NavigationKeys(),\n\t\tk.AppKeys(),\n\t\tadditionalKeys,\n\t}\n\n\tif len(customKeys) > 0 {\n\t\tsections = append(sections, customKeys)\n\t}\n\n\tsections = append(sections, k.QuitAndHelpKeys())\n\n\treturn sections\n}\n\nfunc (k KeyMap) NavigationKeys() []key.Binding {\n\treturn []key.Binding{\n\t\tk.Up,\n\t\tk.Down,\n\t\tk.PrevSection,\n\t\tk.NextSection,\n\t\tk.FirstLine,\n\t\tk.LastLine,\n\t\tk.PageDown,\n\t\tk.PageUp,\n\t}\n}\n\nfunc (k KeyMap) AppKeys() []key.Binding {\n\treturn []key.Binding{\n\t\tk.Refresh,\n\t\tk.RefreshAll,\n\t\tk.TogglePreview,\n\t\tk.OpenGithub,\n\t\tk.CopyNumber,\n\t\tk.CopyUrl,\n\t\tk.Search,\n\t}\n}\n\nfunc (k KeyMap) QuitAndHelpKeys() []key.Binding {\n\treturn []key.Binding{k.Help, k.Quit}\n}\n\nvar Keys = &KeyMap{\n\tUp: key.NewBinding(\n\t\tkey.WithKeys(\"up\", \"k\"),\n\t\tkey.WithHelp(\"↑/k\", \"move up\"),\n\t),\n\tDown: key.NewBinding(\n\t\tkey.WithKeys(\"down\", \"j\"),\n\t\tkey.WithHelp(\"↓/j\", \"move down\"),\n\t),\n\tFirstLine: key.NewBinding(\n\t\tkey.WithKeys(\"g\", \"home\"),\n\t\tkey.WithHelp(\"g/home\", \"first item\"),\n\t),\n\tLastLine: key.NewBinding(\n\t\tkey.WithKeys(\"G\", \"end\"),\n\t\tkey.WithHelp(\"G/end\", \"last item\"),\n\t),\n\tTogglePreview: key.NewBinding(\n\t\tkey.WithKeys(\"p\"),\n\t\tkey.WithHelp(\"p\", \"open in Preview\"),\n\t),\n\tOpenGithub: key.NewBinding(\n\t\tkey.WithKeys(\"o\"),\n\t\tkey.WithHelp(\"o\", \"open in GitHub\"),\n\t),\n\tRefresh: key.NewBinding(\n\t\tkey.WithKeys(\"r\"),\n\t\tkey.WithHelp(\"r\", \"refresh\"),\n\t),\n\tRefreshAll: key.NewBinding(\n\t\tkey.WithKeys(\"R\"),\n\t\tkey.WithHelp(\"R\", \"refresh all\"),\n\t),\n\tPageDown: key.NewBinding(\n\t\tkey.WithKeys(\"ctrl+d\"),\n\t\tkey.WithHelp(\"Ctrl+d\", \"preview page down\"),\n\t),\n\tPageUp: key.NewBinding(\n\t\tkey.WithKeys(\"ctrl+u\"),\n\t\tkey.WithHelp(\"Ctrl+u\", \"preview page up\"),\n\t),\n\tNextSection: key.NewBinding(\n\t\tkey.WithKeys(\"right\", \"l\"),\n\t\tkey.WithHelp(\"󰁔/l\", \"next section\"),\n\t),\n\tPrevSection: key.NewBinding(\n\t\tkey.WithKeys(\"left\", \"h\"),\n\t\tkey.WithHelp(\"󰁍/h\", \"previous section\"),\n\t),\n\tSearch: key.NewBinding(\n\t\tkey.WithKeys(\"/\"),\n\t\tkey.WithHelp(\"/\", \"search\"),\n\t),\n\tCopyNumber: key.NewBinding(\n\t\tkey.WithKeys(\"y\"),\n\t\tkey.WithHelp(\"y\", \"copy number\"),\n\t),\n\tCopyUrl: key.NewBinding(\n\t\tkey.WithKeys(\"Y\"),\n\t\tkey.WithHelp(\"Y\", \"copy url\"),\n\t),\n\tHelp: key.NewBinding(\n\t\tkey.WithKeys(\"?\"),\n\t\tkey.WithHelp(\"?\", \"help\"),\n\t),\n\tQuit: key.NewBinding(\n\t\tkey.WithKeys(\"q\", \"ctrl+c\"),\n\t\tkey.WithHelp(\"q\", \"quit\"),\n\t),\n}\n\n// Rebind will update our saved keybindings from configuration values.\nfunc Rebind(universal, issueKeys, prKeys, branchKeys, notificationKeys []config.Keybinding) error {\n\terr := rebindUniversal(universal)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = rebindPRKeys(prKeys)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = rebindBranchKeys(branchKeys)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = rebindIssueKeys(issueKeys)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn rebindNotificationKeys(notificationKeys)\n}\n\n// CustomBindings stores custom keybindings that don't have built-in equivalents\nvar (\n\tCustomUniversalBindings    []key.Binding\n\tCustomPRBindings           []key.Binding\n\tCustomIssueBindings        []key.Binding\n\tCustomBranchBindings       []key.Binding\n\tCustomNotificationBindings []key.Binding\n)\n\nfunc rebindUniversal(universal []config.Keybinding) error {\n\tlog.Debug(\"Rebinding universal keys\", \"keys\", universal)\n\n\tCustomUniversalBindings = []key.Binding{}\n\n\tfor _, kb := range universal {\n\t\tif kb.Builtin == \"\" {\n\t\t\t// Handle custom commands\n\t\t\tif kb.Command != \"\" {\n\t\t\t\tname := kb.Name\n\t\t\t\tif kb.Name == \"\" {\n\t\t\t\t\tname = config.TruncateCommand(kb.Command)\n\t\t\t\t}\n\n\t\t\t\tcustomBinding := key.NewBinding(\n\t\t\t\t\tkey.WithKeys(kb.Key),\n\t\t\t\t\tkey.WithHelp(kb.Key, name),\n\t\t\t\t)\n\n\t\t\t\tCustomUniversalBindings = append(CustomUniversalBindings, customBinding)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debug(\"Rebinding universal key\", \"builtin\", kb.Builtin, \"key\", kb.Key)\n\n\t\tvar key *key.Binding\n\n\t\tswitch kb.Builtin {\n\t\tcase \"up\":\n\t\t\tkey = &Keys.Up\n\t\tcase \"down\":\n\t\t\tkey = &Keys.Down\n\t\tcase \"firstLine\":\n\t\t\tkey = &Keys.FirstLine\n\t\tcase \"lastLine\":\n\t\t\tkey = &Keys.LastLine\n\t\tcase \"togglePreview\":\n\t\t\tkey = &Keys.TogglePreview\n\t\tcase \"openGithub\":\n\t\t\tkey = &Keys.OpenGithub\n\t\tcase \"refresh\":\n\t\t\tkey = &Keys.Refresh\n\t\tcase \"refreshAll\":\n\t\t\tkey = &Keys.RefreshAll\n\t\tcase \"redraw\":\n\t\t\tkey = &Keys.Redraw\n\t\tcase \"pageDown\":\n\t\t\tkey = &Keys.PageDown\n\t\tcase \"pageUp\":\n\t\t\tkey = &Keys.PageUp\n\t\tcase \"nextSection\":\n\t\t\tkey = &Keys.NextSection\n\t\tcase \"prevSection\":\n\t\t\tkey = &Keys.PrevSection\n\t\tcase \"search\":\n\t\t\tkey = &Keys.Search\n\t\tcase \"copyurl\":\n\t\t\tkey = &Keys.CopyUrl\n\t\tcase \"copyNumber\":\n\t\t\tkey = &Keys.CopyNumber\n\t\tcase \"help\":\n\t\t\tkey = &Keys.Help\n\t\tcase \"quit\":\n\t\t\tkey = &Keys.Quit\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown built-in universal key: '%s'\", kb.Builtin)\n\t\t}\n\n\t\tkey.SetKeys(kb.Key)\n\n\t\thelpDesc := key.Help().Desc\n\t\tif kb.Name != \"\" {\n\t\t\thelpDesc = kb.Name\n\t\t} else if kb.Command != \"\" {\n\t\t\thelpDesc = kb.Command\n\t\t}\n\t\tkey.SetHelp(kb.Key, helpDesc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/keys/keys_test.go",
    "content": "package keys\n\nimport (\n\t\"testing\"\n\n\t\"charm.land/bubbles/v2/key\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\nfunc TestSetNotificationSubject(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsubject  NotificationSubjectType\n\t\texpected NotificationSubjectType\n\t}{\n\t\t{\"none\", NotificationSubjectNone, NotificationSubjectNone},\n\t\t{\"pr\", NotificationSubjectPR, NotificationSubjectPR},\n\t\t{\"issue\", NotificationSubjectIssue, NotificationSubjectIssue},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tSetNotificationSubject(tt.subject)\n\t\t\tif notificationSubject != tt.expected {\n\t\t\t\tt.Errorf(\"expected %v, got %v\", tt.expected, notificationSubject)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFullHelpIncludesPRKeysForPRSubject(t *testing.T) {\n\t// Set up for notifications view with PR subject\n\tkeymap := CreateKeyMapForView(config.NotificationsView)\n\tSetNotificationSubject(NotificationSubjectPR)\n\n\thelp := keymap.FullHelp()\n\n\t// Flatten all sections to check for keys\n\tvar allKeys []key.Binding\n\tfor _, section := range help {\n\t\tallKeys = append(allKeys, section...)\n\t}\n\n\t// Check that notification keys are present\n\tfound := findKeyByHelp(allKeys, \"mark as done\")\n\tif !found {\n\t\tt.Error(\"expected notification key 'mark as done' to be present\")\n\t}\n\n\t// Check that PR keys are present\n\tfound = findKeyByHelp(allKeys, \"diff\")\n\tif !found {\n\t\tt.Error(\"expected PR key 'diff' to be present when viewing PR notification\")\n\t}\n\n\tfound = findKeyByHelp(allKeys, \"approve\")\n\tif !found {\n\t\tt.Error(\"expected PR key 'approve' to be present when viewing PR notification\")\n\t}\n\n\tfound = findKeyByHelp(allKeys, \"approve all workflows\")\n\tif !found {\n\t\tt.Error(\n\t\t\t\"expected PR key 'approve all workflows' to be present when viewing PR notification\",\n\t\t)\n\t}\n\n\t// Clean up\n\tSetNotificationSubject(NotificationSubjectNone)\n}\n\nfunc TestFullHelpIncludesIssueKeysForIssueSubject(t *testing.T) {\n\t// Set up for notifications view with Issue subject\n\tkeymap := CreateKeyMapForView(config.NotificationsView)\n\tSetNotificationSubject(NotificationSubjectIssue)\n\n\thelp := keymap.FullHelp()\n\n\t// Flatten all sections to check for keys\n\tvar allKeys []key.Binding\n\tfor _, section := range help {\n\t\tallKeys = append(allKeys, section...)\n\t}\n\n\t// Check that notification keys are present\n\tfound := findKeyByHelp(allKeys, \"mark as done\")\n\tif !found {\n\t\tt.Error(\"expected notification key 'mark as done' to be present\")\n\t}\n\n\t// Check that Issue keys are present\n\tfound = findKeyByHelp(allKeys, \"label\")\n\tif !found {\n\t\tt.Error(\"expected Issue key 'label' to be present when viewing Issue notification\")\n\t}\n\n\tfound = findKeyByHelp(allKeys, \"close\")\n\tif !found {\n\t\tt.Error(\"expected Issue key 'close' to be present when viewing Issue notification\")\n\t}\n\n\t// Clean up\n\tSetNotificationSubject(NotificationSubjectNone)\n}\n\nfunc TestFullHelpExcludesPRKeysForNoSubject(t *testing.T) {\n\t// Set up for notifications view with no subject\n\tkeymap := CreateKeyMapForView(config.NotificationsView)\n\tSetNotificationSubject(NotificationSubjectNone)\n\n\thelp := keymap.FullHelp()\n\n\t// Flatten all sections to check for keys\n\tvar allKeys []key.Binding\n\tfor _, section := range help {\n\t\tallKeys = append(allKeys, section...)\n\t}\n\n\t// Check that notification keys are present\n\tfound := findKeyByHelp(allKeys, \"mark as done\")\n\tif !found {\n\t\tt.Error(\"expected notification key 'mark as done' to be present\")\n\t}\n\n\t// Check that PR keys are NOT present\n\tfound = findKeyByHelp(allKeys, \"diff\")\n\tif found {\n\t\tt.Error(\"expected PR key 'diff' to NOT be present when no subject is selected\")\n\t}\n\n\t// Check that Issue keys are NOT present\n\tfound = findKeyByHelp(allKeys, \"label\")\n\tif found {\n\t\tt.Error(\"expected Issue key 'label' to NOT be present when no subject is selected\")\n\t}\n}\n\nfunc TestFullHelpForPRViewDoesNotIncludeNotificationKeys(t *testing.T) {\n\t// Set up for PR view (not notifications)\n\tkeymap := CreateKeyMapForView(config.PRsView)\n\tSetNotificationSubject(NotificationSubjectNone)\n\n\thelp := keymap.FullHelp()\n\n\t// Flatten all sections to check for keys\n\tvar allKeys []key.Binding\n\tfor _, section := range help {\n\t\tallKeys = append(allKeys, section...)\n\t}\n\n\t// Check that PR keys are present\n\tfound := findKeyByHelp(allKeys, \"diff\")\n\tif !found {\n\t\tt.Error(\"expected PR key 'diff' to be present in PR view\")\n\t}\n\n\t// Check that notification-specific keys are NOT present\n\tfound = findKeyByHelp(allKeys, \"toggle bookmark\")\n\tif found {\n\t\tt.Error(\"expected notification key 'toggle bookmark' to NOT be present in PR view\")\n\t}\n}\n\n// findKeyByHelp searches for a key binding by its help description\nfunc findKeyByHelp(keys []key.Binding, helpDesc string) bool {\n\tfor _, k := range keys {\n\t\tif k.Help().Desc == helpDesc {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc TestRebindNotificationKeys_Builtin(t *testing.T) {\n\t// Save original key and restore after test\n\torigKey := NotificationKeys.MarkAsDone.Keys()\n\torigHelp := NotificationKeys.MarkAsDone.Help().Desc\n\tdefer func() {\n\t\tNotificationKeys.MarkAsDone.SetKeys(origKey...)\n\t\tNotificationKeys.MarkAsDone.SetHelp(origKey[0], origHelp)\n\t}()\n\n\terr := rebindNotificationKeys([]config.Keybinding{\n\t\t{Builtin: \"markAsDone\", Key: \"X\"},\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"unexpected error: %v\", err)\n\t}\n\n\tkeys := NotificationKeys.MarkAsDone.Keys()\n\tif len(keys) != 1 || keys[0] != \"X\" {\n\t\tt.Errorf(\"expected key to be rebound to X, got %v\", keys)\n\t}\n}\n\nfunc TestRebindNotificationKeys_UnknownBuiltin(t *testing.T) {\n\terr := rebindNotificationKeys([]config.Keybinding{\n\t\t{Builtin: \"nonExistent\", Key: \"Z\"},\n\t})\n\tif err == nil {\n\t\tt.Error(\"expected error for unknown builtin, got nil\")\n\t}\n}\n\nfunc TestRebindNotificationKeys_CustomCommand(t *testing.T) {\n\t// Clear any previous custom bindings\n\tCustomNotificationBindings = nil\n\n\terr := rebindNotificationKeys([]config.Keybinding{\n\t\t{Key: \"N\", Command: \"echo hello\"},\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"unexpected error: %v\", err)\n\t}\n\n\tif len(CustomNotificationBindings) != 1 {\n\t\tt.Fatalf(\"expected 1 custom binding, got %d\", len(CustomNotificationBindings))\n\t}\n\tif CustomNotificationBindings[0].Keys()[0] != \"N\" {\n\t\tt.Errorf(\"expected custom binding key N, got %s\", CustomNotificationBindings[0].Keys()[0])\n\t}\n}\n\nfunc TestFullHelpIncludesCustomNotificationBindings(t *testing.T) {\n\t// Set up custom notification bindings\n\tCustomNotificationBindings = []key.Binding{\n\t\tkey.NewBinding(key.WithKeys(\"N\"), key.WithHelp(\"N\", \"custom notif action\")),\n\t}\n\tdefer func() { CustomNotificationBindings = nil }()\n\n\tkeymap := CreateKeyMapForView(config.NotificationsView)\n\tSetNotificationSubject(NotificationSubjectNone)\n\n\thelp := keymap.FullHelp()\n\n\tvar allKeys []key.Binding\n\tfor _, section := range help {\n\t\tallKeys = append(allKeys, section...)\n\t}\n\n\tfound := findKeyByHelp(allKeys, \"custom notif action\")\n\tif !found {\n\t\tt.Error(\"expected custom notification binding to appear in help\")\n\t}\n\n\t// Clean up\n\tSetNotificationSubject(NotificationSubjectNone)\n}\n"
  },
  {
    "path": "internal/tui/keys/notificationKeys.go",
    "content": "package keys\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/key\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\ntype NotificationKeyMap struct {\n\tView                 key.Binding\n\tBackToNotification   key.Binding\n\tMarkAsDone           key.Binding\n\tMarkAllAsDone        key.Binding\n\tMarkAsRead           key.Binding\n\tMarkAllAsRead        key.Binding\n\tUnsubscribe          key.Binding\n\tToggleBookmark       key.Binding\n\tOpen                 key.Binding\n\tSortByRepo           key.Binding\n\tSwitchToPRs          key.Binding\n\tToggleSmartFiltering key.Binding\n}\n\nvar NotificationKeys = NotificationKeyMap{\n\tView: key.NewBinding(\n\t\tkey.WithKeys(\"enter\"),\n\t\tkey.WithHelp(\"enter\", \"view notification\"),\n\t),\n\tBackToNotification: key.NewBinding(\n\t\tkey.WithKeys(\"esc\"),\n\t\tkey.WithHelp(\"esc\", \"back to notification\"),\n\t),\n\tMarkAsDone: key.NewBinding(\n\t\tkey.WithKeys(\"D\"),\n\t\tkey.WithHelp(\"D\", \"mark as done\"),\n\t),\n\tMarkAllAsDone: key.NewBinding(\n\t\tkey.WithKeys(\"alt+d\"),\n\t\tkey.WithHelp(\"Alt+d\", \"mark all as done\"),\n\t),\n\tMarkAsRead: key.NewBinding(\n\t\tkey.WithKeys(\"m\"),\n\t\tkey.WithHelp(\"m\", \"mark as read\"),\n\t),\n\tMarkAllAsRead: key.NewBinding(\n\t\tkey.WithKeys(\"M\"),\n\t\tkey.WithHelp(\"M\", \"mark all as read\"),\n\t),\n\tUnsubscribe: key.NewBinding(\n\t\tkey.WithKeys(\"u\"),\n\t\tkey.WithHelp(\"u\", \"unsubscribe\"),\n\t),\n\tToggleBookmark: key.NewBinding(\n\t\tkey.WithKeys(\"b\"),\n\t\tkey.WithHelp(\"b\", \"toggle bookmark\"),\n\t),\n\tOpen: key.NewBinding(\n\t\tkey.WithKeys(\"o\"),\n\t\tkey.WithHelp(\"o\", \"open in browser\"),\n\t),\n\tSortByRepo: key.NewBinding(\n\t\tkey.WithKeys(\"S\"),\n\t\tkey.WithHelp(\"S\", \"sort by repo\"),\n\t),\n\tSwitchToPRs: key.NewBinding(\n\t\tkey.WithKeys(\"s\"),\n\t\tkey.WithHelp(\"s\", \"switch to PRs\"),\n\t),\n\tToggleSmartFiltering: key.NewBinding(\n\t\tkey.WithKeys(\"t\"),\n\t\tkey.WithHelp(\"t\", \"toggle smart filtering\"),\n\t),\n}\n\nfunc NotificationFullHelp() []key.Binding {\n\treturn []key.Binding{\n\t\tNotificationKeys.View,\n\t\tNotificationKeys.BackToNotification,\n\t\tNotificationKeys.MarkAsDone,\n\t\tNotificationKeys.MarkAllAsDone,\n\t\tNotificationKeys.MarkAsRead,\n\t\tNotificationKeys.MarkAllAsRead,\n\t\tNotificationKeys.Unsubscribe,\n\t\tNotificationKeys.ToggleBookmark,\n\t\tNotificationKeys.Open,\n\t\tNotificationKeys.SortByRepo,\n\t\tNotificationKeys.SwitchToPRs,\n\t\tNotificationKeys.ToggleSmartFiltering,\n\t}\n}\n\nfunc rebindNotificationKeys(keys []config.Keybinding) error {\n\tCustomNotificationBindings = []key.Binding{}\n\n\tfor _, notifKey := range keys {\n\t\tif notifKey.Builtin == \"\" {\n\t\t\t// Handle custom commands\n\t\t\tif notifKey.Command != \"\" {\n\t\t\t\tname := notifKey.Name\n\t\t\t\tif notifKey.Name == \"\" {\n\t\t\t\t\tname = config.TruncateCommand(notifKey.Command)\n\t\t\t\t}\n\n\t\t\t\tcustomBinding := key.NewBinding(\n\t\t\t\t\tkey.WithKeys(notifKey.Key),\n\t\t\t\t\tkey.WithHelp(notifKey.Key, name),\n\t\t\t\t)\n\n\t\t\t\tCustomNotificationBindings = append(CustomNotificationBindings, customBinding)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debug(\"Rebinding notification key\", \"builtin\", notifKey.Builtin, \"key\", notifKey.Key)\n\n\t\tvar key *key.Binding\n\n\t\tswitch notifKey.Builtin {\n\t\tcase \"view\":\n\t\t\tkey = &NotificationKeys.View\n\t\tcase \"markAsDone\":\n\t\t\tkey = &NotificationKeys.MarkAsDone\n\t\tcase \"markAllAsDone\":\n\t\t\tkey = &NotificationKeys.MarkAllAsDone\n\t\tcase \"markAsRead\":\n\t\t\tkey = &NotificationKeys.MarkAsRead\n\t\tcase \"markAllAsRead\":\n\t\t\tkey = &NotificationKeys.MarkAllAsRead\n\t\tcase \"unsubscribe\":\n\t\t\tkey = &NotificationKeys.Unsubscribe\n\t\tcase \"toggleBookmark\":\n\t\t\tkey = &NotificationKeys.ToggleBookmark\n\t\tcase \"open\":\n\t\t\tkey = &NotificationKeys.Open\n\t\tcase \"sortByRepo\":\n\t\t\tkey = &NotificationKeys.SortByRepo\n\t\tcase \"switchToPRs\":\n\t\t\tkey = &NotificationKeys.SwitchToPRs\n\t\tcase \"toggleSmartFiltering\":\n\t\t\tkey = &NotificationKeys.ToggleSmartFiltering\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown built-in notification key: '%s'\", notifKey.Builtin)\n\t\t}\n\n\t\tkey.SetKeys(notifKey.Key)\n\n\t\thelpDesc := key.Help().Desc\n\t\tif notifKey.Name != \"\" {\n\t\t\thelpDesc = notifKey.Name\n\t\t}\n\t\tkey.SetHelp(notifKey.Key, helpDesc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/keys/prKeys.go",
    "content": "package keys\n\nimport (\n\t\"fmt\"\n\n\t\"charm.land/bubbles/v2/key\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\ntype PRKeyMap struct {\n\tPrevSidebarTab       key.Binding\n\tNextSidebarTab       key.Binding\n\tApprove              key.Binding\n\tAssign               key.Binding\n\tUnassign             key.Binding\n\tComment              key.Binding\n\tDiff                 key.Binding\n\tCheckout             key.Binding\n\tClose                key.Binding\n\tSummaryViewMore      key.Binding\n\tReady                key.Binding\n\tReopen               key.Binding\n\tMerge                key.Binding\n\tUpdate               key.Binding\n\tWatchChecks          key.Binding\n\tApproveWorkflows     key.Binding\n\tToggleSmartFiltering key.Binding\n\tViewIssues           key.Binding\n}\n\nvar PRKeys = PRKeyMap{\n\tPrevSidebarTab: key.NewBinding(\n\t\tkey.WithKeys(\"[\"),\n\t\tkey.WithHelp(\"[\", \"previous sidebar tab\"),\n\t),\n\tNextSidebarTab: key.NewBinding(\n\t\tkey.WithKeys(\"]\"),\n\t\tkey.WithHelp(\"]\", \"next sidebar tab\"),\n\t),\n\tApprove: key.NewBinding(\n\t\tkey.WithKeys(\"v\"),\n\t\tkey.WithHelp(\"v\", \"approve\"),\n\t),\n\tAssign: key.NewBinding(\n\t\tkey.WithKeys(\"a\"),\n\t\tkey.WithHelp(\"a\", \"assign\"),\n\t),\n\tUnassign: key.NewBinding(\n\t\tkey.WithKeys(\"A\"),\n\t\tkey.WithHelp(\"A\", \"unassign\"),\n\t),\n\tComment: key.NewBinding(\n\t\tkey.WithKeys(\"c\"),\n\t\tkey.WithHelp(\"c\", \"comment\"),\n\t),\n\tDiff: key.NewBinding(\n\t\tkey.WithKeys(\"d\"),\n\t\tkey.WithHelp(\"d\", \"diff\"),\n\t),\n\tCheckout: key.NewBinding(\n\t\tkey.WithKeys(\"C\", \"space\"),\n\t\tkey.WithHelp(\"C/Space\", \"checkout\"),\n\t),\n\tClose: key.NewBinding(\n\t\tkey.WithKeys(\"x\"),\n\t\tkey.WithHelp(\"x\", \"close\"),\n\t),\n\tSummaryViewMore: key.NewBinding(\n\t\tkey.WithKeys(\"e\"),\n\t\tkey.WithHelp(\"e\", \"expand description\"),\n\t),\n\tReopen: key.NewBinding(\n\t\tkey.WithKeys(\"X\"),\n\t\tkey.WithHelp(\"X\", \"reopen\"),\n\t),\n\tReady: key.NewBinding(\n\t\tkey.WithKeys(\"W\"),\n\t\tkey.WithHelp(\"W\", \"ready for review\"),\n\t),\n\tMerge: key.NewBinding(\n\t\tkey.WithKeys(\"m\"),\n\t\tkey.WithHelp(\"m\", \"merge\"),\n\t),\n\tUpdate: key.NewBinding(\n\t\tkey.WithKeys(\"u\"),\n\t\tkey.WithHelp(\"u\", \"update pr from base branch\"),\n\t),\n\tWatchChecks: key.NewBinding(\n\t\tkey.WithKeys(\"w\"),\n\t\tkey.WithHelp(\"w\", \"watch checks\"),\n\t),\n\tApproveWorkflows: key.NewBinding(\n\t\tkey.WithKeys(\"V\"),\n\t\tkey.WithHelp(\"V\", \"approve all workflows\"),\n\t),\n\tToggleSmartFiltering: key.NewBinding(\n\t\tkey.WithKeys(\"t\"),\n\t\tkey.WithHelp(\"t\", \"toggle smart filtering\"),\n\t),\n\tViewIssues: key.NewBinding(\n\t\tkey.WithKeys(\"s\"),\n\t\tkey.WithHelp(\"s\", \"switch to issues\"),\n\t),\n}\n\nfunc PRFullHelp() []key.Binding {\n\treturn []key.Binding{\n\t\tPRKeys.PrevSidebarTab,\n\t\tPRKeys.NextSidebarTab,\n\t\tPRKeys.Approve,\n\t\tPRKeys.Assign,\n\t\tPRKeys.Unassign,\n\t\tPRKeys.Comment,\n\t\tPRKeys.Diff,\n\t\tPRKeys.Checkout,\n\t\tPRKeys.Close,\n\t\tPRKeys.Ready,\n\t\tPRKeys.Reopen,\n\t\tPRKeys.Merge,\n\t\tPRKeys.Update,\n\t\tPRKeys.WatchChecks,\n\t\tPRKeys.ApproveWorkflows,\n\t\tPRKeys.ToggleSmartFiltering,\n\t\tPRKeys.ViewIssues,\n\t}\n}\n\nfunc rebindPRKeys(keys []config.Keybinding) error {\n\tCustomPRBindings = []key.Binding{}\n\n\tfor _, prKey := range keys {\n\t\tif prKey.Builtin == \"\" {\n\t\t\t// Handle custom commands\n\t\t\tif prKey.Command != \"\" {\n\t\t\t\tname := prKey.Name\n\t\t\t\tif prKey.Name == \"\" {\n\t\t\t\t\tname = config.TruncateCommand(prKey.Command)\n\t\t\t\t}\n\n\t\t\t\tcustomBinding := key.NewBinding(\n\t\t\t\t\tkey.WithKeys(prKey.Key),\n\t\t\t\t\tkey.WithHelp(prKey.Key, name),\n\t\t\t\t)\n\n\t\t\t\tCustomPRBindings = append(CustomPRBindings, customBinding)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debug(\"Rebinding PR key\", \"builtin\", prKey.Builtin, \"key\", prKey.Key)\n\n\t\tvar key *key.Binding\n\n\t\tswitch prKey.Builtin {\n\t\tcase \"prevSidebarTab\":\n\t\t\tkey = &PRKeys.PrevSidebarTab\n\t\tcase \"nextSidebarTab\":\n\t\t\tkey = &PRKeys.NextSidebarTab\n\t\tcase \"approve\":\n\t\t\tkey = &PRKeys.Approve\n\t\tcase \"assign\":\n\t\t\tkey = &PRKeys.Assign\n\t\tcase \"unassign\":\n\t\t\tkey = &PRKeys.Unassign\n\t\tcase \"comment\":\n\t\t\tkey = &PRKeys.Comment\n\t\tcase \"diff\":\n\t\t\tkey = &PRKeys.Diff\n\t\tcase \"checkout\":\n\t\t\tkey = &PRKeys.Checkout\n\t\tcase \"close\":\n\t\t\tkey = &PRKeys.Close\n\t\tcase \"ready\":\n\t\t\tkey = &PRKeys.Ready\n\t\tcase \"reopen\":\n\t\t\tkey = &PRKeys.Reopen\n\t\tcase \"merge\":\n\t\t\tkey = &PRKeys.Merge\n\t\tcase \"update\":\n\t\t\tkey = &PRKeys.Update\n\t\tcase \"watchChecks\":\n\t\t\tkey = &PRKeys.WatchChecks\n\t\tcase \"approveWorkflows\":\n\t\t\tkey = &PRKeys.ApproveWorkflows\n\t\tcase \"viewIssues\":\n\t\t\tkey = &PRKeys.ViewIssues\n\t\tcase \"summaryViewMore\":\n\t\t\tkey = &PRKeys.SummaryViewMore\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown built-in pr key: '%s'\", prKey.Builtin)\n\t\t}\n\n\t\tkey.SetKeys(prKey.Key)\n\n\t\thelpDesc := key.Help().Desc\n\t\tif prKey.Name != \"\" {\n\t\t\thelpDesc = prKey.Name\n\t\t}\n\t\tkey.SetHelp(prKey.Key, helpDesc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/markdown/markdownRenderer.go",
    "content": "package markdown\n\nimport (\n\t\"charm.land/glamour/v2\"\n\t\"charm.land/glamour/v2/ansi\"\n\t\"charm.land/glamour/v2/styles\"\n)\n\nvar markdownStyle *ansi.StyleConfig\n\nfunc InitializeMarkdownStyle(hasDarkBackground bool) {\n\tif markdownStyle != nil {\n\t\treturn\n\t}\n\tif hasDarkBackground {\n\t\tmarkdownStyle = &CustomDarkStyleConfig\n\t} else {\n\t\tmarkdownStyle = &styles.LightStyleConfig\n\t}\n}\n\nfunc GetMarkdownRenderer(width int) glamour.TermRenderer {\n\tmarkdownRenderer, err := glamour.NewTermRenderer(\n\t\tglamour.WithStyles(*markdownStyle),\n\t\tglamour.WithWordWrap(width),\n\t)\n\tif err != nil || markdownRenderer == nil {\n\t\t// Return a fallback renderer that just returns input unchanged\n\t\tfallback, _ := glamour.NewTermRenderer()\n\t\tif fallback != nil {\n\t\t\treturn *fallback\n\t\t}\n\t\t// If even fallback fails, panic with helpful message\n\t\tpanic(\"failed to create markdown renderer: \" + err.Error())\n\t}\n\n\treturn *markdownRenderer\n}\n"
  },
  {
    "path": "internal/tui/markdown/theme.go",
    "content": "package markdown\n\nimport \"charm.land/glamour/v2/ansi\"\n\n// DarkStyleConfig is the default dark style.\nvar CustomDarkStyleConfig = ansi.StyleConfig{\n\tDocument: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tBlockPrefix: \"\",\n\t\t\tBlockSuffix: \"\",\n\t\t\tPrefix:      \"\",\n\t\t},\n\t\tMargin:      uintPtr(0),\n\t\tIndentToken: stringPtr(\"\"),\n\t\tIndent:      uintPtr(0),\n\t},\n\tParagraph: ansi.StyleBlock{\n\t\tMargin:      uintPtr(0),\n\t\tIndentToken: stringPtr(\"\"),\n\t\tIndent:      uintPtr(0),\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tBlockPrefix: \"\",\n\t\t\tBlockSuffix: \"\",\n\t\t\tPrefix:      \"\",\n\t\t},\n\t},\n\tBlockQuote: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{},\n\t\tIndent:         uintPtr(1),\n\t\tIndentToken:    stringPtr(\"│ \"),\n\t},\n\tList: ansi.StyleList{\n\t\tLevelIndent: 2,\n\t},\n\tHeading: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tBlockSuffix: \"\",\n\t\t\tColor:       stringPtr(\"#666CA6\"),\n\t\t\tBold:        boolPtr(true),\n\t\t},\n\t},\n\tH1: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tPrefix: \"# \",\n\t\t\tColor:  stringPtr(\"255\"),\n\t\t\tBold:   boolPtr(true),\n\t\t},\n\t},\n\tH2: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tColor:  stringPtr(\"252\"),\n\t\t\tPrefix: \"## \",\n\t\t},\n\t},\n\tH3: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tColor:  stringPtr(\"251\"),\n\t\t\tPrefix: \"### \",\n\t\t},\n\t},\n\tH4: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tColor:  stringPtr(\"250\"),\n\t\t\tPrefix: \"#### \",\n\t\t},\n\t},\n\tH5: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tColor:  stringPtr(\"249\"),\n\t\t\tPrefix: \"##### \",\n\t\t},\n\t},\n\tH6: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tPrefix: \"###### \",\n\t\t\tColor:  stringPtr(\"248\"),\n\t\t\tBold:   boolPtr(false),\n\t\t},\n\t},\n\tStrikethrough: ansi.StylePrimitive{\n\t\tCrossedOut: boolPtr(true),\n\t},\n\tEmph: ansi.StylePrimitive{\n\t\tItalic: boolPtr(true),\n\t},\n\tStrong: ansi.StylePrimitive{\n\t\tBold: boolPtr(true),\n\t},\n\tHorizontalRule: ansi.StylePrimitive{\n\t\tColor:  stringPtr(\"240\"),\n\t\tFormat: \"\\n--------\\n\",\n\t},\n\tItem: ansi.StylePrimitive{\n\t\tBlockPrefix: \"• \",\n\t},\n\tEnumeration: ansi.StylePrimitive{\n\t\tBlockPrefix: \". \",\n\t},\n\tTask: ansi.StyleTask{\n\t\tStylePrimitive: ansi.StylePrimitive{},\n\t\tTicked:         \"[✓] \",\n\t\tUnticked:       \"[ ] \",\n\t},\n\tLink: ansi.StylePrimitive{\n\t\tColor:       stringPtr(\"#666CA6\"),\n\t\tUnderline:   boolPtr(false),\n\t\tBlockPrefix: \"\",\n\t\tBlockSuffix: \"\",\n\t\tFormat:      \"\",\n\t},\n\tLinkText: ansi.StylePrimitive{\n\t\tColor: stringPtr(\"#666CA6\"),\n\t\tBold:  boolPtr(true),\n\t},\n\tImage: ansi.StylePrimitive{\n\t\tUnderline: boolPtr(false),\n\t\tColor:     stringPtr(\"#666CA6\"),\n\t\tBold:      boolPtr(false),\n\t\tFormat:    \"\",\n\t},\n\tImageText: ansi.StylePrimitive{\n\t\tColor:  stringPtr(\"#666CA6\"),\n\t\tBold:   boolPtr(true),\n\t\tFormat: \"\",\n\t},\n\tCode: ansi.StyleBlock{\n\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\tColor:       stringPtr(\"#E2E1ED\"),\n\t\t\tPrefix:      \"`\",\n\t\t\tSuffix:      \"`\",\n\t\t\tBlockPrefix: \"\",\n\t\t\tBlockSuffix: \"\",\n\t\t},\n\t},\n\tCodeBlock: ansi.StyleCodeBlock{\n\t\tStyleBlock: ansi.StyleBlock{\n\t\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"244\"),\n\t\t\t},\n\t\t\tMargin: uintPtr(0),\n\t\t},\n\t\tChroma: &ansi.Chroma{\n\t\t\tText: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#C4C4C4\"),\n\t\t\t},\n\t\t\tError: ansi.StylePrimitive{\n\t\t\t\tColor:           stringPtr(\"#F1F1F1\"),\n\t\t\t\tBackgroundColor: stringPtr(\"#F05B5B\"),\n\t\t\t},\n\t\t\tComment: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#676767\"),\n\t\t\t},\n\t\t\tCommentPreproc: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FF875F\"),\n\t\t\t},\n\t\t\tKeyword: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#00AAFF\"),\n\t\t\t},\n\t\t\tKeywordReserved: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FF5FD2\"),\n\t\t\t},\n\t\t\tKeywordNamespace: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FF5F87\"),\n\t\t\t},\n\t\t\tKeywordType: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#6E6ED8\"),\n\t\t\t},\n\t\t\tOperator: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#EF8080\"),\n\t\t\t},\n\t\t\tPunctuation: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#E8E8A8\"),\n\t\t\t},\n\t\t\tName: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#C4C4C4\"),\n\t\t\t},\n\t\t\tNameBuiltin: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FF8EC7\"),\n\t\t\t},\n\t\t\tNameTag: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#B083EA\"),\n\t\t\t},\n\t\t\tNameAttribute: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#7A7AE6\"),\n\t\t\t},\n\t\t\tNameClass: ansi.StylePrimitive{\n\t\t\t\tColor:     stringPtr(\"#F1F1F1\"),\n\t\t\t\tUnderline: boolPtr(true),\n\t\t\t\tBold:      boolPtr(true),\n\t\t\t},\n\t\t\tNameDecorator: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FFFF87\"),\n\t\t\t},\n\t\t\tNameFunction: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#00D787\"),\n\t\t\t},\n\t\t\tLiteralNumber: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#6EEFC0\"),\n\t\t\t},\n\t\t\tLiteralString: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#C69669\"),\n\t\t\t},\n\t\t\tLiteralStringEscape: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#AFFFD7\"),\n\t\t\t},\n\t\t\tGenericDeleted: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#FD5B5B\"),\n\t\t\t},\n\t\t\tGenericEmph: ansi.StylePrimitive{\n\t\t\t\tItalic: boolPtr(true),\n\t\t\t},\n\t\t\tGenericInserted: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#00D787\"),\n\t\t\t},\n\t\t\tGenericStrong: ansi.StylePrimitive{\n\t\t\t\tBold: boolPtr(true),\n\t\t\t},\n\t\t\tGenericSubheading: ansi.StylePrimitive{\n\t\t\t\tColor: stringPtr(\"#777777\"),\n\t\t\t},\n\t\t\tBackground: ansi.StylePrimitive{\n\t\t\t\tBackgroundColor: stringPtr(\"#373737\"),\n\t\t\t},\n\t\t},\n\t},\n\tTable: ansi.StyleTable{\n\t\tStyleBlock: ansi.StyleBlock{\n\t\t\tStylePrimitive: ansi.StylePrimitive{\n\t\t\t\tFormat:  \" \",\n\t\t\t\tConceal: boolPtr(true),\n\t\t\t},\n\t\t},\n\t\tCenterSeparator: stringPtr(\"\"),\n\t\tColumnSeparator: stringPtr(\"\"),\n\t\tRowSeparator:    stringPtr(\"\"),\n\t},\n\tDefinitionDescription: ansi.StylePrimitive{\n\t\tBlockPrefix: \" \",\n\t},\n}\n\nfunc boolPtr(b bool) *bool { return &b }\n\nfunc stringPtr(s string) *string { return &s }\n\nfunc uintPtr(u uint) *uint { return &u }\n"
  },
  {
    "path": "internal/tui/modelUtils.go",
    "content": "package tui\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"maps\"\n\t\"os\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"text/template\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\tlog \"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n)\n\nfunc (m *Model) getCurrSection() section.Section {\n\tsections := m.getCurrentViewSections()\n\tif len(sections) == 0 || m.currSectionId >= len(sections) {\n\t\treturn nil\n\t}\n\treturn sections[m.currSectionId]\n}\n\nfunc (m *Model) getCurrRowData() data.RowData {\n\tsection := m.getCurrSection()\n\tif section == nil {\n\t\treturn nil\n\t}\n\treturn section.GetCurrRow()\n}\n\nfunc (m *Model) getSectionAt(id int) section.Section {\n\tsections := m.getCurrentViewSections()\n\tif len(sections) <= id {\n\t\treturn nil\n\t}\n\treturn sections[id]\n}\n\nfunc (m *Model) getPrevSectionId() int {\n\treturn max(0, (m.currSectionId - 1))\n}\n\nfunc (m *Model) getNextSectionId() int {\n\treturn min((m.currSectionId + 1), len(m.ctx.GetViewSectionsConfig())-1)\n}\n\ntype IssueCommandTemplateInput struct {\n\tRepoName    string\n\tRepoPath    string\n\tIssueNumber int\n\tHeadRefName string\n}\n\nfunc (m *Model) executeKeybinding(key string) tea.Cmd {\n\tcurrRowData := m.getCurrRowData()\n\n\tfor _, keybinding := range m.ctx.Config.Keybindings.Universal {\n\t\tif keybinding.Key != key {\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Info(\"executing keybind\", \"key\", keybinding.Key, \"command\", keybinding.Command)\n\t\treturn m.runCustomUniversalCommand(keybinding.Command)\n\t}\n\n\tswitch m.ctx.View {\n\tcase config.IssuesView:\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Issues {\n\t\t\tif keybinding.Key != key {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tswitch data := currRowData.(type) {\n\t\t\tcase *data.IssueData:\n\t\t\t\treturn m.runCustomIssueCommand(keybinding.Command, data)\n\t\t\t}\n\t\t}\n\tcase config.PRsView:\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Prs {\n\t\t\tif keybinding.Key != key || keybinding.Command == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tlog.Debug(\"executing keybind\", \"key\", keybinding.Key, \"command\", keybinding.Command)\n\n\t\t\tswitch data := currRowData.(type) {\n\t\t\tcase *prrow.Data:\n\t\t\t\treturn m.runCustomPRCommand(keybinding.Command, data)\n\t\t\t}\n\t\t}\n\tcase config.RepoView:\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Branches {\n\t\t\tif keybinding.Key != key || keybinding.Command == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tlog.Debug(\"executing keybind\", \"key\", keybinding.Key, \"command\", keybinding.Command)\n\n\t\t\tswitch data := currRowData.(type) {\n\t\t\tcase *prrow.Data:\n\t\t\t\treturn m.runCustomBranchCommand(keybinding.Command, data)\n\t\t\t}\n\t\t}\n\tcase config.NotificationsView:\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Notifications {\n\t\t\tif keybinding.Key != key || keybinding.Command == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlog.Debug(\n\t\t\t\t\"executing notification keybind\",\n\t\t\t\t\"key\",\n\t\t\t\tkeybinding.Key,\n\t\t\t\t\"command\",\n\t\t\t\tkeybinding.Command,\n\t\t\t)\n\t\t\tif nData, ok := currRowData.(*notificationrow.Data); ok {\n\t\t\t\treturn m.runCustomNotificationCommand(keybinding.Command, nData)\n\t\t\t}\n\t\t}\n\n\t\tif nData, ok := currRowData.(*notificationrow.Data); ok {\n\t\t\tswitch nData.Notification.Subject.Type {\n\t\t\tcase \"PullRequest\":\n\t\t\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Prs {\n\t\t\t\t\tif keybinding.Key != key || keybinding.Command == \"\" {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tlog.Debug(\n\t\t\t\t\t\t\"executing notification PR keybind\",\n\t\t\t\t\t\t\"key\",\n\t\t\t\t\t\tkeybinding.Key,\n\t\t\t\t\t\t\"command\",\n\t\t\t\t\t\tkeybinding.Command,\n\t\t\t\t\t)\n\t\t\t\t\treturn m.runCustomNotificationPRCommand(keybinding.Command, nData)\n\t\t\t\t}\n\t\t\tcase \"Issue\":\n\t\t\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Issues {\n\t\t\t\t\tif keybinding.Key != key || keybinding.Command == \"\" {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tlog.Debug(\n\t\t\t\t\t\t\"executing notification issue keybind\",\n\t\t\t\t\t\t\"key\",\n\t\t\t\t\t\tkeybinding.Key,\n\t\t\t\t\t\t\"command\",\n\t\t\t\t\t\tkeybinding.Command,\n\t\t\t\t\t)\n\t\t\t\t\treturn m.runCustomNotificationIssueCommand(keybinding.Command, nData)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tdefault:\n\t\t// Not a valid case - ignore it\n\t}\n\n\treturn nil\n}\n\n// runCustomCommand executes a user-defined command.\n// commandTemplate is a template string that will be parsed with the input data.\n// contextData is a map of key-value pairs of data specific to the context the command is being run in.\nfunc (m *Model) runCustomCommand(commandTemplate string, contextData *map[string]any) tea.Cmd {\n\t// A generic map is a pretty easy & flexible way to populate a template if there's no pressing need\n\t// for structured data, existing structs, etc. Especially if holes in the data are expected.\n\t// Common data shared across contexts could be set here.\n\tinput := map[string]any{}\n\n\t// Merge data specific to the context the command is being run in onto any common data, overwriting duplicate keys.\n\tif contextData != nil {\n\t\tmaps.Copy(input, *contextData)\n\t}\n\n\t// Append in the local RepoPath only if it can be found\n\tif input[\"RepoName\"] != nil {\n\t\tif repoPath, ok := common.GetRepoLocalPath(\n\t\t\tinput[\"RepoName\"].(string),\n\t\t\tm.ctx.Config.RepoPaths,\n\t\t); ok {\n\t\t\tinput[\"RepoPath\"] = repoPath\n\t\t}\n\t}\n\n\tcmd, err := template.New(\"keybinding_command\").Parse(commandTemplate)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed parse keybinding template\", \"error\", err)\n\t}\n\n\t// Set the command to error out if required input (e.g. RepoPath) is missing\n\tcmd = cmd.Option(\"missingkey=error\")\n\n\tvar buff bytes.Buffer\n\terr = cmd.Execute(&buff, input)\n\tif err != nil {\n\t\treturn func() tea.Msg {\n\t\t\tlog.Error(\"failed to parsetemplate\", \"err\", err, \"commandTemplate\", commandTemplate)\n\t\t\treturn constants.ErrMsg{Err: fmt.Errorf(\"failed to parsetemplate %s\", commandTemplate)}\n\t\t}\n\t}\n\treturn m.executeCustomCommand(buff.String())\n}\n\nfunc (m *Model) runCustomPRCommand(commandTemplate string, prData *prrow.Data) tea.Cmd {\n\treturn m.runCustomCommand(commandTemplate,\n\t\t&map[string]any{\n\t\t\t\"RepoName\":    prData.GetRepoNameWithOwner(),\n\t\t\t\"PrNumber\":    prData.Primary.Number,\n\t\t\t\"HeadRefName\": prData.Primary.HeadRefName,\n\t\t\t\"BaseRefName\": prData.Primary.BaseRefName,\n\t\t\t\"Author\":      prData.Primary.Author.Login,\n\t\t})\n}\n\nfunc (m *Model) runCustomIssueCommand(commandTemplate string, issueData *data.IssueData) tea.Cmd {\n\treturn m.runCustomCommand(commandTemplate,\n\t\t&map[string]any{\n\t\t\t\"RepoName\":    issueData.GetRepoNameWithOwner(),\n\t\t\t\"IssueNumber\": issueData.Number,\n\t\t\t\"Author\":      issueData.Author.Login,\n\t\t},\n\t)\n}\n\nfunc (m *Model) runCustomBranchCommand(commandTemplate string, branchData *prrow.Data) tea.Cmd {\n\tif reflect.ValueOf(branchData).IsNil() {\n\t\treturn m.executeCustomCommand(commandTemplate)\n\t}\n\tinput := map[string]any{\n\t\t\"RepoPath\": m.ctx.RepoPath,\n\t}\n\tif branchData != nil {\n\t\tmaps.Copy(input,\n\t\t\tmap[string]any{\n\t\t\t\t\"RepoName\":    branchData.GetRepoNameWithOwner(),\n\t\t\t\t\"PrNumber\":    branchData.Primary.Number,\n\t\t\t\t\"HeadRefName\": branchData.Primary.HeadRefName,\n\t\t\t\t\"BaseRefName\": branchData.Primary.BaseRefName,\n\t\t\t\t\"Author\":      branchData.Primary.Author.Login,\n\t\t\t})\n\t}\n\treturn m.runCustomCommand(commandTemplate, &input)\n}\n\nfunc (m *Model) runCustomUniversalCommand(commandTemplate string) tea.Cmd {\n\tinput := map[string]any{\"RepoPath\": m.ctx.RepoPath}\n\treturn m.runCustomCommand(commandTemplate, &input)\n}\n\nfunc (m *Model) runCustomNotificationPRCommand(\n\tcommandTemplate string,\n\tnData *notificationrow.Data,\n) tea.Cmd {\n\tfields := map[string]any{\n\t\t\"RepoName\": nData.GetRepoNameWithOwner(),\n\t\t\"PrNumber\": nData.GetNumber(),\n\t}\n\tif pr := m.notificationView.GetSubjectPR(); pr != nil {\n\t\tfields[\"HeadRefName\"] = pr.Primary.HeadRefName\n\t\tfields[\"BaseRefName\"] = pr.Primary.BaseRefName\n\t\tfields[\"Author\"] = pr.Primary.Author.Login\n\t}\n\treturn m.runCustomCommand(commandTemplate, &fields)\n}\n\nfunc (m *Model) runCustomNotificationIssueCommand(\n\tcommandTemplate string,\n\tnData *notificationrow.Data,\n) tea.Cmd {\n\tfields := map[string]any{\n\t\t\"RepoName\":    nData.GetRepoNameWithOwner(),\n\t\t\"IssueNumber\": nData.GetNumber(),\n\t}\n\tif issue := m.notificationView.GetSubjectIssue(); issue != nil {\n\t\tfields[\"Author\"] = issue.Author.Login\n\t}\n\treturn m.runCustomCommand(commandTemplate, &fields)\n}\n\nfunc (m *Model) runCustomNotificationCommand(\n\tcommandTemplate string,\n\tnData *notificationrow.Data,\n) tea.Cmd {\n\tfields := map[string]any{\n\t\t\"RepoName\": nData.GetRepoNameWithOwner(),\n\t\t\"Number\":   nData.GetNumber(),\n\t}\n\treturn m.runCustomCommand(commandTemplate, &fields)\n}\n\ntype execProcessFinishedMsg struct{}\n\nfunc (m *Model) executeCustomCommand(cmd string) tea.Cmd {\n\tlog.Debug(\"executing custom command\", \"cmd\", cmd)\n\tshell := os.Getenv(\"SHELL\")\n\tif shell == \"\" {\n\t\tshell = \"sh\"\n\t}\n\tc := exec.Command(shell, \"-c\", cmd)\n\treturn tea.ExecProcess(c, func(err error) tea.Msg {\n\t\tif err != nil {\n\t\t\tmdRenderer := markdown.GetMarkdownRenderer(m.ctx.ScreenWidth)\n\t\t\tmd, mdErr := mdRenderer.Render(fmt.Sprintf(\"While running: `%s`\", cmd))\n\t\t\tif mdErr != nil {\n\t\t\t\treturn constants.ErrMsg{Err: mdErr}\n\t\t\t}\n\t\t\treturn constants.ErrMsg{Err: errors.New(\n\t\t\t\tlipgloss.JoinVertical(lipgloss.Left,\n\t\t\t\t\tfmt.Sprintf(\"Whoops, got an error: %s\", err),\n\t\t\t\t\tmd,\n\t\t\t\t),\n\t\t\t)}\n\t\t}\n\t\treturn execProcessFinishedMsg{}\n\t})\n}\n\nfunc (m *Model) notify(text string) tea.Cmd {\n\tid := fmt.Sprint(time.Now().Unix())\n\tstartCmd := m.ctx.StartTask(\n\t\tcontext.Task{\n\t\t\tId:           id,\n\t\t\tStartText:    text,\n\t\t\tFinishedText: text,\n\t\t\tState:        context.TaskStart,\n\t\t})\n\n\tfinishCmd := func() tea.Msg {\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tTaskId: id,\n\t\t}\n\t}\n\n\treturn tea.Sequence(startCmd, finishCmd)\n}\n\nfunc (m *Model) notifyErr(text string) tea.Cmd {\n\tid := fmt.Sprint(time.Now().Unix())\n\tstartCmd := m.ctx.StartTask(\n\t\tcontext.Task{\n\t\t\tId:           id,\n\t\t\tStartText:    text,\n\t\t\tFinishedText: text,\n\t\t\tState:        context.TaskStart,\n\t\t})\n\n\tfinishCmd := func() tea.Msg {\n\t\treturn constants.TaskFinishedMsg{\n\t\t\tTaskId: id,\n\t\t\tErr:    errors.New(text),\n\t\t}\n\t}\n\n\treturn tea.Sequence(startCmd, finishCmd)\n}\n"
  },
  {
    "path": "internal/tui/tasks.go",
    "content": "package tui\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\t\"github.com/cli/go-gh/v2/pkg/browser\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n)\n\nfunc (m *Model) openBrowser() tea.Cmd {\n\ttaskId := fmt.Sprintf(\"open_browser_%d\", time.Now().Unix())\n\ttask := context.Task{\n\t\tId:           taskId,\n\t\tStartText:    \"Opening in browser\",\n\t\tFinishedText: \"Opened in browser\",\n\t\tState:        context.TaskStart,\n\t\tError:        nil,\n\t}\n\tstartCmd := m.ctx.StartTask(task)\n\topenCmd := func() tea.Msg {\n\t\tb := browser.New(\"\", os.Stdout, os.Stdin)\n\t\tcurrRow := m.getCurrRowData()\n\t\tif currRow == nil || reflect.ValueOf(currRow).IsNil() {\n\t\t\treturn constants.TaskFinishedMsg{\n\t\t\t\tTaskId: taskId,\n\t\t\t\tErr:    errors.New(\"current selection doesn't have a URL\"),\n\t\t\t}\n\t\t}\n\t\terr := b.Browse(currRow.GetUrl())\n\t\treturn constants.TaskFinishedMsg{TaskId: taskId, Err: err}\n\t}\n\treturn tea.Batch(startCmd, openCmd)\n}\n"
  },
  {
    "path": "internal/tui/testdata/searchIssues.json",
    "content": "{\n  \"data\": {\n    \"search\": {\n      \"nodes\": [\n        {\n          \"number\": 141,\n          \"title\": \"[Feature Request] Support notifications section\",\n          \"body\": \"# Feature or problem?\\r\\nThis is a feature request to manage github notifications. Github notifications are filtered similarly to issues, and prs.\\r\\n\\r\\n# Solution I'd like:\\r\\n* An additional set of panels for notifications, and notification filters.\\r\\n* Keyboard shortcut to mark a notification as done, subscribe, or bookmark \\r\\n  * Reading through notifications should be fast, move to next after taking an action \\r\\n* Optional shortcut to mark all notifications in the filter at once. \\r\\n\\r\\n# Alternates I've considered\\r\\nUsing an alternative plugin to mark all notifications as read.\\r\\n\",\n          \"state\": \"OPEN\",\n          \"author\": {\n            \"login\": \"mtwig\"\n          },\n          \"authorAssociation\": \"NONE\",\n          \"updatedAt\": \"2025-10-04T16:30:08Z\",\n          \"createdAt\": \"2022-06-21T01:35:25Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/issues/141\",\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"Yeah I would also like that :) good idea\",\n                \"updatedAt\": \"2022-07-03T11:45:34Z\"\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"reactions\": {\n            \"totalCount\": 19\n          },\n          \"labels\": {\n            \"nodes\": [\n              {\n                \"color\": \"a2eeef\",\n                \"name\": \"feat\"\n              },\n              {\n                \"color\": \"682b23\",\n                \"name\": \"high-pri\"\n              }\n            ]\n          }\n        },\n        {\n          \"number\": 461,\n          \"title\": \"[BUG] Colors from preview can bleed into PR/Issue list on the next line\",\n          \"body\": \"**Describe the bug**\\r\\n\\r\\nIf preview is not wide enough to contain all the colored \\\"labels\\\" at the top, colors can bleed in to PR/Issue list on the next line.  I updated to the latest version this morning, and observed this bug for the first time. So my guess is that this was introduced with ` v4.6.0` or ` v4.7.0`.\\r\\n\\r\\n**To Reproduce**\\r\\n\\r\\nSet preview with to something sufficiently small:\\r\\n\\r\\n```yaml\\r\\ndefaults:\\r\\n  preview:\\r\\n    open: true\\r\\n    width: 40\\r\\n```\\r\\n\\r\\n**Expected behavior**\\r\\n\\r\\nFor the colors not to bleed over to the next line :smile: \\r\\n\\r\\n**Screenshots**\\r\\n\\r\\nLook how the green color of the Branch \\\"label\\\" bleeds into the next line.\\r\\n![image](https://github.com/user-attachments/assets/0094759b-ef85-42bc-bc43-77b34003d9f1)\\r\\n\\r\\n**Desktop (please complete the following information):**\\r\\n - OS: Ubuntu\",\n          \"state\": \"OPEN\",\n          \"author\": {\n            \"login\": \"gbbirkisson\"\n          },\n          \"authorAssociation\": \"NONE\",\n          \"updatedAt\": \"2025-10-04T16:30:56Z\",\n          \"createdAt\": \"2024-10-03T08:33:05Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/issues/461\",\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"paveldudka\"\n                },\n                \"body\": \"Started facing this bug all of the sudden :(\\nAre there any known workarounds besides bumping up default preview width to 80?\",\n                \"updatedAt\": \"2025-02-19T02:00:38Z\"\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"reactions\": {\n            \"totalCount\": 17\n          },\n          \"labels\": {\n            \"nodes\": [\n              {\n                \"color\": \"d73a4a\",\n                \"name\": \"bug\"\n              },\n              {\n                \"color\": \"c955dd\",\n                \"name\": \"mid-pri\"\n              }\n            ]\n          }\n        },\n        {\n          \"number\": 175,\n          \"title\": \"Add PR approval\",\n          \"body\": \"**Is your feature request related to a problem? Please describe.**\\r\\nSometimes when bumping Terraform module versions, I get a bunch of renovate PRs. I would like to quickly approve them from within dash.\\r\\n\\r\\n**Describe the solution you'd like**\\r\\nI would like to add \\\"Approve\\\" as a keybinding like \\\"Merge\\\" (https://github.com/dlvhdr/gh-dash/pull/168).\\r\\nProbably it popups with a message dialog to enter a comment.\\r\\n\\r\\n**Describe alternatives you've considered**\\r\\nCurrently I created my own keybinding.\\r\\n\\r\\n**Additional context**\\r\\nI would like to implement it in the context of #hacktoberfest which is just around the corner.\\r\\n\",\n          \"state\": \"CLOSED\",\n          \"author\": {\n            \"login\": \"jgrumboe\"\n          },\n          \"authorAssociation\": \"NONE\",\n          \"updatedAt\": \"2024-11-20T13:18:37Z\",\n          \"createdAt\": \"2022-09-15T12:45:46Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/issues/175\",\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"cool yeah that's something I definitely want!\\r\\nI didn't implement it yet as I needed to think more on the UX of it.\\r\\nReviewing a PR with `gh pr review` needs flags specifying approving/rejecting and a message body.\\r\\nI thought I could implement an generic input mechanism similar to vim's `vim.ui.select`.\\r\\n\\r\\nSomething like this:\\r\\n![image](https://user-images.githubusercontent.com/6196971/190410301-131d2c0f-1eec-43a5-ad23-2f66422974b8.png)\\r\\n\",\n                \"updatedAt\": \"2022-09-15T13:01:16Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"jgrumboe\"\n                },\n                \"body\": \"Would it make sense to use something like the modal window from tview (https://github.com/rivo/tview/wiki/Modal) ?\",\n                \"updatedAt\": \"2022-09-15T15:04:30Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"I'm not sure that'll work with bubbletea, but if it were to work, do you know how much that'll add to the binary size?\",\n                \"updatedAt\": \"2022-09-15T17:11:37Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"jgrumboe\"\n                },\n                \"body\": \"No idea. Honestly,  I'm more or less a copy/paste \\\"dev\\\" as my background is more Ops than Dev. 🙂 \\r\\n\\r\\nBut as said I would like to try a PR for #hacktoberfest. Are you fine with that?\",\n                \"updatedAt\": \"2022-09-15T17:31:47Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"Yeah sure, give it a try\",\n                \"updatedAt\": \"2022-09-15T17:41:27Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"jgrumboe\"\n                },\n                \"body\": \"After a quick search I know now that bubbletea is already a TUI lib 💡 and that https://github.com/erikgeiser/promptkit could be a good fit. I will explore in the bubbles field.\",\n                \"updatedAt\": \"2022-09-15T18:11:25Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"Yes check out https://github.com/charmbracelet/bubbles\",\n                \"updatedAt\": \"2022-09-15T18:47:20Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"rpdelaney\"\n                },\n                \"body\": \"This would be a big help for us since most of our repos require approval before a PR can be merged\",\n                \"updatedAt\": \"2022-12-13T20:04:14Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"rpdelaney\"\n                },\n                \"body\": \"@dlvhdr \\r\\n> I needed to think more on the UX of it.\\r\\n\\r\\nHaving separate hotkeys for approval and requesting changes would be enough for us. Simple is better than nothing. This is the last feature I need to live in the terminal. :) \",\n                \"updatedAt\": \"2023-02-03T16:45:45Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"Got it :) Making someone be able to live in the terminal is definitely a motivator 🥰\",\n                \"updatedAt\": \"2023-02-03T16:48:41Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"dudicoco\"\n                },\n                \"body\": \"@rpdelaney but what about reviewing the PR before approving it? You would still need a way to add comments on lines in files. This can be done with octo nvim but if you use it then you can approve the PR through its interface.\\r\\n\",\n                \"updatedAt\": \"2023-12-07T18:18:19Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"rpdelaney\"\n                },\n                \"body\": \"@dudicoco Not every PR requires that I add comments.\",\n                \"updatedAt\": \"2023-12-07T21:53:13Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"miniscruff\"\n                },\n                \"body\": \"For anyone curious, you can use gh-dash with [Gum](https://github.com/charmbracelet/gum) also from charm to create prompts with input.\\r\\n\\r\\nHere is how you can do a pr approval with a comment. Can adjust for request changes, text blocks over inputs etc.\\r\\n\\r\\n```yaml\\r\\nkeybindings:\\r\\n  prs:\\r\\n    - key: a\\r\\n      command: >\\r\\n        gh pr review --repo {{.RepoName}} --approve --body \\\"$(gum input --prompt='Approval Comment: ')\\\" {{.PrNumber}}\\r\\n\\r\\n```\",\n                \"updatedAt\": \"2024-04-03T00:34:04Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"rpdelaney\"\n                },\n                \"body\": \"```\\r\\nkeybindings:\\r\\n  prs:\\r\\n    - key: a\\r\\n      command: >\\r\\n        gh pr review --repo {{.RepoName}} --approve\\r\\n```\\r\\nI did not grok that this was possible already in gh-dash. Thank you so much.\",\n                \"updatedAt\": \"2024-04-03T13:54:47Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"adamtaylor13\"\n                },\n                \"body\": \"Figured this out today, but left me with a quick question—is there a way to adjust the `?` help text? Asking because inevitably I'll need to check my own config several times before I \\\"learn\\\" my own key bindings 😂 It would be nice to be able to see my updated key binding in the help text.\",\n                \"updatedAt\": \"2024-05-28T17:45:09Z\"\n              }\n            ],\n            \"totalCount\": 18\n          },\n          \"reactions\": {\n            \"totalCount\": 11\n          },\n          \"labels\": {\n            \"nodes\": []\n          }\n        },\n        {\n          \"number\": 108,\n          \"title\": \"Some suggestions to the documents\",\n          \"body\": \"I just want to address some issues I met and hope it could help others. \\r\\n\\r\\n## The folder that stores the config\\r\\n\\r\\nAccording https://pkg.go.dev/os#UserConfigDir, the folder is different in each OS.  it is `~/Library/Application Support/gh-dash` on Mac. \\r\\n\\r\\nDon't waste your time struggling with the `~/.config/gh-dash` folder..\\r\\n\\r\\n## The icons on the UI\\r\\n\\r\\nYou may not see the icons correctly even though you already have installed and used a nerd font. \\r\\n\\r\\nThat is because some of the icons need to be rendered with the `bold` style. Make sure you have set the bold font correctly. \\r\\n\\r\\n\\r\\n\\r\\n\",\n          \"state\": \"CLOSED\",\n          \"author\": {\n            \"login\": \"wd\"\n          },\n          \"authorAssociation\": \"NONE\",\n          \"updatedAt\": \"2022-05-28T12:03:51Z\",\n          \"createdAt\": \"2022-04-04T02:09:35Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/issues/108\",\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"Fixed in #135 \",\n                \"updatedAt\": \"2022-05-28T12:03:51Z\"\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"reactions\": {\n            \"totalCount\": 10\n          },\n          \"labels\": {\n            \"nodes\": []\n          }\n        },\n        {\n          \"number\": 107,\n          \"title\": \"Support Horizontal split preview\",\n          \"body\": \"**Is your feature request related to a problem? Please describe.**\\r\\n\\r\\nRight now, there's only a vertical split for the preview. Would be great to have a horizontal one, especially in situations where the width of your terminal is constrained.\",\n          \"state\": \"OPEN\",\n          \"author\": {\n            \"login\": \"macintacos\"\n          },\n          \"authorAssociation\": \"NONE\",\n          \"updatedAt\": \"2025-10-04T16:31:06Z\",\n          \"createdAt\": \"2022-04-03T21:16:07Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/issues/107\",\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"adilansari\"\n                },\n                \"body\": \"@dlvhdr would a change to `input.SetWidth(xx)` do the trick?\\r\\n\\r\\nhttps://github.com/dlvhdr/gh-dash/blob/58a38ca68788efdf1637ecaeeed2500318d8e8fb/ui/components/prview/prview.go#L34\",\n                \"updatedAt\": \"2023-05-05T17:28:20Z\"\n              },\n              {\n                \"author\": {\n                  \"login\": \"silky\"\n                },\n                \"body\": \"This would be so handy for those of us that wish to have this always-open on a portrait-style monitor ❤️  :)\",\n                \"updatedAt\": \"2024-05-28T08:12:41Z\"\n              }\n            ],\n            \"totalCount\": 2\n          },\n          \"reactions\": {\n            \"totalCount\": 9\n          },\n          \"labels\": {\n            \"nodes\": [\n              {\n                \"color\": \"a2eeef\",\n                \"name\": \"feat\"\n              },\n              {\n                \"color\": \"80866c\",\n                \"name\": \"low-pri\"\n              }\n            ]\n          }\n        }\n      ],\n      \"issueCount\": 226,\n      \"pageInfo\": {\n        \"hasNextPage\": true,\n        \"startCursor\": \"Y3Vyc29yOjE=\",\n        \"endCursor\": \"Y3Vyc29yOjU=\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "internal/tui/testdata/searchPullRequests.json",
    "content": "{\n  \"data\": {\n    \"search\": {\n      \"nodes\": [\n        {\n          \"number\": 635,\n          \"title\": \"style: make assignment brief\",\n          \"body\": \"\",\n          \"author\": {\n            \"login\": \"LinPr\"\n          },\n          \"authorAssociation\": \"CONTRIBUTOR\",\n          \"updatedAt\": \"2025-09-18T17:42:42Z\",\n          \"createdAt\": \"2025-09-18T17:38:19Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/pull/635\",\n          \"state\": \"MERGED\",\n          \"mergeable\": \"UNKNOWN\",\n          \"reviewDecision\": \"APPROVED\",\n          \"additions\": 1,\n          \"deletions\": 2,\n          \"headRefName\": \"style\",\n          \"baseRefName\": \"main\",\n          \"headRepository\": {\n            \"name\": \"gh-dash\"\n          },\n          \"headRef\": {\n            \"name\": \"style\"\n          },\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"totalCount\": 0\n          },\n          \"reviews\": {\n            \"totalCount\": 1,\n            \"nodes\": [\n              {\n                \"author\": {\n                  \"login\": \"dlvhdr\"\n                },\n                \"body\": \"\",\n                \"state\": \"APPROVED\",\n                \"updatedAt\": \"2025-09-18T17:39:56Z\"\n              }\n            ]\n          },\n          \"reviewThreads\": {\n            \"totalCount\": 0\n          },\n          \"reviewRequests\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"files\": {\n            \"totalCount\": 1,\n            \"nodes\": [\n              {\n                \"additions\": 1,\n                \"deletions\": 2,\n                \"path\": \"internal/tui/ui.go\",\n                \"changeType\": \"MODIFIED\"\n              }\n            ]\n          },\n          \"isDraft\": false,\n          \"commits\": {\n            \"nodes\": [\n              {\n                \"commit\": {\n                  \"deployments\": {\n                    \"nodes\": []\n                  },\n                  \"statusCheckRollup\": {}\n                }\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"labels\": {\n            \"nodes\": []\n          },\n          \"mergeStateStatus\": \"UNKNOWN\"\n        },\n        {\n          \"number\": 632,\n          \"title\": \"chore: remove unused demo tape\",\n          \"body\": \"\",\n          \"author\": {\n            \"login\": \"dlvhdr\"\n          },\n          \"authorAssociation\": \"OWNER\",\n          \"updatedAt\": \"2025-09-17T19:30:20Z\",\n          \"createdAt\": \"2025-09-17T19:28:34Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/pull/632\",\n          \"state\": \"MERGED\",\n          \"mergeable\": \"UNKNOWN\",\n          \"reviewDecision\": \"REVIEW_REQUIRED\",\n          \"additions\": 0,\n          \"deletions\": 51,\n          \"headRefName\": \"dlvhdr/cleanup-demo-tape\",\n          \"baseRefName\": \"main\",\n          \"headRepository\": {\n            \"name\": \"gh-dash\"\n          },\n          \"headRef\": null,\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"totalCount\": 0\n          },\n          \"reviews\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"reviewThreads\": {\n            \"totalCount\": 0\n          },\n          \"reviewRequests\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"files\": {\n            \"totalCount\": 1,\n            \"nodes\": [\n              {\n                \"additions\": 0,\n                \"deletions\": 51,\n                \"path\": \"demo.tape\",\n                \"changeType\": \"DELETED\"\n              }\n            ]\n          },\n          \"isDraft\": false,\n          \"commits\": {\n            \"nodes\": [\n              {\n                \"commit\": {\n                  \"deployments\": {\n                    \"nodes\": []\n                  },\n                  \"statusCheckRollup\": {}\n                }\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"labels\": {\n            \"nodes\": []\n          },\n          \"mergeStateStatus\": \"UNKNOWN\"\n        },\n        {\n          \"number\": 631,\n          \"title\": \"refactor: move utils to internal\",\n          \"body\": \"\",\n          \"author\": {\n            \"login\": \"dlvhdr\"\n          },\n          \"authorAssociation\": \"OWNER\",\n          \"updatedAt\": \"2025-09-17T19:27:25Z\",\n          \"createdAt\": \"2025-09-17T19:26:12Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/pull/631\",\n          \"state\": \"MERGED\",\n          \"mergeable\": \"UNKNOWN\",\n          \"reviewDecision\": \"REVIEW_REQUIRED\",\n          \"additions\": 20,\n          \"deletions\": 20,\n          \"headRefName\": \"dlvhdr/refactor-utils-to-pkg\",\n          \"baseRefName\": \"main\",\n          \"headRepository\": {\n            \"name\": \"gh-dash\"\n          },\n          \"headRef\": null,\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"totalCount\": 0\n          },\n          \"reviews\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"reviewThreads\": {\n            \"totalCount\": 0\n          },\n          \"reviewRequests\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"files\": {\n            \"totalCount\": 22,\n            \"nodes\": [\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/config/parser.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/git/git.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/tui/components/branch/branch.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/tui/components/footer/footer.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/tui/components/issue/issue.go\",\n                \"changeType\": \"MODIFIED\"\n              }\n            ]\n          },\n          \"isDraft\": false,\n          \"commits\": {\n            \"nodes\": [\n              {\n                \"commit\": {\n                  \"deployments\": {\n                    \"nodes\": []\n                  },\n                  \"statusCheckRollup\": {}\n                }\n              }\n            ],\n            \"totalCount\": 1\n          },\n          \"labels\": {\n            \"nodes\": []\n          },\n          \"mergeStateStatus\": \"UNKNOWN\"\n        },\n        {\n          \"number\": 630,\n          \"title\": \"refactor: move ui to internal/tui\",\n          \"body\": \"\",\n          \"author\": {\n            \"login\": \"dlvhdr\"\n          },\n          \"authorAssociation\": \"OWNER\",\n          \"updatedAt\": \"2025-09-17T19:24:42Z\",\n          \"createdAt\": \"2025-09-17T19:18:16Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/pull/630\",\n          \"state\": \"MERGED\",\n          \"mergeable\": \"UNKNOWN\",\n          \"reviewDecision\": \"REVIEW_REQUIRED\",\n          \"additions\": 158,\n          \"deletions\": 158,\n          \"headRefName\": \"dlvhdr/refactor-tui\",\n          \"baseRefName\": \"main\",\n          \"headRepository\": {\n            \"name\": \"gh-dash\"\n          },\n          \"headRef\": null,\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"totalCount\": 0\n          },\n          \"reviews\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"reviewThreads\": {\n            \"totalCount\": 0\n          },\n          \"reviewRequests\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"files\": {\n            \"totalCount\": 70,\n            \"nodes\": [\n              {\n                \"additions\": 4,\n                \"deletions\": 4,\n                \"path\": \"cmd/root.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/data/issueapi.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/data/prapi.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 1,\n                \"deletions\": 1,\n                \"path\": \"internal/data/utils.go\",\n                \"changeType\": \"MODIFIED\"\n              },\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/tui/common/labels.go\",\n                \"changeType\": \"RENAMED\"\n              }\n            ]\n          },\n          \"isDraft\": false,\n          \"commits\": {\n            \"nodes\": [\n              {\n                \"commit\": {\n                  \"deployments\": {\n                    \"nodes\": []\n                  },\n                  \"statusCheckRollup\": {}\n                }\n              }\n            ],\n            \"totalCount\": 3\n          },\n          \"labels\": {\n            \"nodes\": []\n          },\n          \"mergeStateStatus\": \"UNKNOWN\"\n        },\n        {\n          \"number\": 629,\n          \"title\": \"refactor: move data to internal\",\n          \"body\": \"\",\n          \"author\": {\n            \"login\": \"dlvhdr\"\n          },\n          \"authorAssociation\": \"OWNER\",\n          \"updatedAt\": \"2025-09-17T19:12:44Z\",\n          \"createdAt\": \"2025-09-17T19:11:02Z\",\n          \"url\": \"https://github.com/dlvhdr/gh-dash/pull/629\",\n          \"state\": \"MERGED\",\n          \"mergeable\": \"UNKNOWN\",\n          \"reviewDecision\": \"REVIEW_REQUIRED\",\n          \"additions\": 28,\n          \"deletions\": 28,\n          \"headRefName\": \"dlvhdr/move-data-internal\",\n          \"baseRefName\": \"main\",\n          \"headRepository\": {\n            \"name\": \"gh-dash\"\n          },\n          \"headRef\": null,\n          \"repository\": {\n            \"name\": \"gh-dash\",\n            \"nameWithOwner\": \"dlvhdr/gh-dash\",\n            \"isArchived\": false,\n            \"branchProtectionRules\": {\n              \"nodes\": [\n                {\n                  \"requiredApprovingReviewCount\": 1,\n                  \"requiresApprovingReviews\": true,\n                  \"requiresCodeOwnerReviews\": false,\n                  \"requiresStatusChecks\": true\n                }\n              ]\n            }\n          },\n          \"assignees\": {\n            \"nodes\": []\n          },\n          \"comments\": {\n            \"totalCount\": 0\n          },\n          \"reviews\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"reviewThreads\": {\n            \"totalCount\": 0\n          },\n          \"reviewRequests\": {\n            \"totalCount\": 0,\n            \"nodes\": []\n          },\n          \"files\": {\n            \"totalCount\": 34,\n            \"nodes\": [\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/data/assignee.go\",\n                \"changeType\": \"RENAMED\"\n              },\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/data/issueapi.go\",\n                \"changeType\": \"RENAMED\"\n              },\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/data/prapi.go\",\n                \"changeType\": \"RENAMED\"\n              },\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/data/repository.go\",\n                \"changeType\": \"RENAMED\"\n              },\n              {\n                \"additions\": 0,\n                \"deletions\": 0,\n                \"path\": \"internal/data/user.go\",\n                \"changeType\": \"RENAMED\"\n              }\n            ]\n          },\n          \"isDraft\": false,\n          \"commits\": {\n            \"nodes\": [\n              {\n                \"commit\": {\n                  \"deployments\": {\n                    \"nodes\": []\n                  },\n                  \"statusCheckRollup\": {}\n                }\n              }\n            ],\n            \"totalCount\": 2\n          },\n          \"labels\": {\n            \"nodes\": []\n          },\n          \"mergeStateStatus\": \"UNKNOWN\"\n        }\n      ],\n      \"issueCount\": 352,\n      \"pageInfo\": {\n        \"hasNextPage\": true,\n        \"startCursor\": \"Y3Vyc29yOjE=\",\n        \"endCursor\": \"Y3Vyc29yOjIw\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "internal/tui/testutils/utils.go",
    "content": "package testutils\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\t// \"charm.land/x/exp/teatest\"\n)\n\nfunc bytesContains(t *testing.T, bts []byte, str string) bool {\n\tt.Helper()\n\treturn bytes.Contains(bts, []byte(str))\n}\n\n// func WaitForText(t *testing.T, tm *teatest.TestModel, text string, options ...teatest.WaitForOption) {\n// \tt.Helper()\n// \tteatest.WaitFor(t,\n// \t\ttm.Output(),\n// \t\tfunc(bts []byte) bool {\n// \t\t\tcontains := bytesContains(t, bts, text)\n// \t\t\tif _, debug := os.LookupEnv(\"DEBUG\"); debug {\n// \t\t\t\tif contains {\n// \t\t\t\t\tf, _ := os.CreateTemp(\"\", \"gh-dash-debug\")\n// \t\t\t\t\tdefer f.Close()\n// \t\t\t\t\tfmt.Fprintf(f, \"%s\", string(bts))\n// \t\t\t\t\tlog.Error(\"✅ wrote to file while looking for text\", \"file\", f.Name(), \"text\", text)\n// \t\t\t\t} else {\n// \t\t\t\t\tf, _ := os.CreateTemp(\"\", \"not-found-gh-dash-debug\")\n// \t\t\t\t\tdefer f.Close()\n// \t\t\t\t\tfmt.Fprintf(f, \"%s\", string(bts))\n// \t\t\t\t\tlog.Error(\"❌ text not found\", \"file\", f.Name(), \"text\", text)\n// \t\t\t\t}\n// \t\t\t}\n// \t\t\treturn contains\n// \t\t},\n// \t\toptions...,\n// \t)\n// }\n\n// func Run(m tea.Model) {\n// \tlipgloss.SetColorProfile(termenv.TrueColor)\n// \tnewConfigFile, _ := os.OpenFile(\"debug.log\",\n// \t\tos.O_RDWR|os.O_CREATE|os.O_APPEND, 0o666)\n// \tlog.SetOutput(newConfigFile)\n// \tlog.SetLevel(log.DebugLevel)\n// \tp := tea.NewProgram(\n// \t\tm,\n// \t)\n// \tif _, err := p.Run(); err != nil {\n// \t\tlog.Fatal(\"Failed starting the TUI\", err)\n// \t}\n// }\n\nfunc AssertNoError(t testing.TB, got error) {\n\tt.Helper()\n\tif got != nil {\n\t\tt.Fatal(got)\n\t}\n}\n"
  },
  {
    "path": "internal/tui/theme/theme.go",
    "content": "package theme\n\nimport (\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n\t\"charm.land/log/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n)\n\ntype Theme struct {\n\tSelectedBackground      compat.AdaptiveColor // config.Theme.Colors.Background.Selected\n\tPrimaryBorder           compat.AdaptiveColor // config.Theme.Colors.Border.Primary\n\tFaintBorder             compat.AdaptiveColor // config.Theme.Colors.Border.Faint\n\tSecondaryBorder         compat.AdaptiveColor // config.Theme.Colors.Border.Secondary\n\tFaintText               compat.AdaptiveColor // config.Theme.Colors.Text.Faint\n\tPrimaryText             compat.AdaptiveColor // config.Theme.Colors.Text.Primary\n\tSecondaryText           compat.AdaptiveColor // config.Theme.Colors.Text.Secondary\n\tInvertedText            compat.AdaptiveColor // config.Theme.Colors.Text.Inverted\n\tSuccessText             compat.AdaptiveColor // config.Theme.Colors.Text.Success\n\tWarningText             compat.AdaptiveColor // config.Theme.Colors.Text.Warning\n\tErrorText               compat.AdaptiveColor // config.Theme.Colors.Text.Error\n\tActorText               compat.AdaptiveColor // config.Theme.Colors.Text.Actor\n\tNewContributorIconColor compat.AdaptiveColor // config.Theme.Colors.Icon.NewContributor\n\tContributorIconColor    compat.AdaptiveColor // config.Theme.Colors.Icon.Contributor\n\tCollaboratorIconColor   compat.AdaptiveColor // config.Theme.Colors.Icon.Collaborator\n\tMemberIconColor         compat.AdaptiveColor // config.Theme.Colors.Icon.Member\n\tOwnerIconColor          compat.AdaptiveColor // config.Theme.Colors.Icon.Owner\n\tUnknownRoleIconColor    compat.AdaptiveColor // config.Theme.Colors.Icon.UnknownRole\n\tNewContributorIcon      string               // config.Theme.Icons.NewContributor\n\tContributorIcon         string               // config.Theme.Icons.Contributor\n\tCollaboratorIcon        string               // config.Theme.Icons.Collaborator\n\tMemberIcon              string               // config.Theme.Icons.Member\n\tOwnerIcon               string               // config.Theme.Icons.Owner\n\tUnknownRoleIcon         string               // config.Theme.Icons.UnknownRole\n}\n\nvar DefaultTheme = &Theme{\n\tPrimaryBorder: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(8),\n\t\tDark:  lipgloss.ANSIColor(8),\n\t},\n\tSecondaryBorder: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(8),\n\t\tDark:  lipgloss.ANSIColor(7),\n\t},\n\tSelectedBackground: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(7),\n\t\tDark:  lipgloss.ANSIColor(236),\n\t},\n\tFaintBorder: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(254),\n\t\tDark:  lipgloss.ANSIColor(234),\n\t},\n\tPrimaryText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(0),\n\t\tDark:  lipgloss.ANSIColor(15),\n\t},\n\tSecondaryText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(244),\n\t\tDark:  lipgloss.ANSIColor(251),\n\t},\n\tFaintText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(7),\n\t\tDark:  lipgloss.ANSIColor(245),\n\t},\n\tInvertedText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(15),\n\t\tDark:  lipgloss.ANSIColor(236),\n\t},\n\tSuccessText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(10),\n\t\tDark:  lipgloss.ANSIColor(10),\n\t},\n\tWarningText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(11),\n\t\tDark:  lipgloss.ANSIColor(11),\n\t},\n\tErrorText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(1),\n\t\tDark:  lipgloss.ANSIColor(9),\n\t},\n\tActorText: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(244),\n\t\tDark:  lipgloss.ANSIColor(251),\n\t}, // Same as SecondaryText\n\tNewContributorIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(77),\n\t\tDark:  lipgloss.ANSIColor(77),\n\t},\n\tContributorIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(75),\n\t\tDark:  lipgloss.ANSIColor(75),\n\t},\n\tCollaboratorIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(178),\n\t\tDark:  lipgloss.ANSIColor(178),\n\t},\n\tMemberIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(178),\n\t\tDark:  lipgloss.ANSIColor(178),\n\t},\n\tOwnerIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(178),\n\t\tDark:  lipgloss.ANSIColor(178),\n\t},\n\tUnknownRoleIconColor: compat.AdaptiveColor{\n\t\tLight: lipgloss.ANSIColor(178),\n\t\tDark:  lipgloss.ANSIColor(178),\n\t},\n\tNewContributorIcon: constants.NewContributorIcon,\n\tContributorIcon:    constants.ContributorIcon,\n\tCollaboratorIcon:   constants.CollaboratorIcon,\n\tMemberIcon:         constants.MemberIcon,\n\tOwnerIcon:          constants.OwnerIcon,\n\tUnknownRoleIcon:    constants.UnknownRoleIcon,\n}\n\nfunc ParseTheme(cfg *config.Config) Theme {\n\t_shimColor := func(color config.Color, fallback compat.AdaptiveColor) compat.AdaptiveColor {\n\t\tif color == \"\" {\n\t\t\treturn fallback\n\t\t}\n\t\tlog.Debug(\"parseTheme\", \"color\", color)\n\t\treturn compat.AdaptiveColor{\n\t\t\tLight: lipgloss.Color(string(color)),\n\t\t\tDark:  lipgloss.Color(string(color)),\n\t\t}\n\t}\n\t_shimIcon := func(icon string, fallback string) string {\n\t\tif icon != \"\" {\n\t\t\treturn icon\n\t\t}\n\t\treturn fallback\n\t}\n\n\tif cfg.Theme.Colors != nil {\n\t\tDefaultTheme.SelectedBackground = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Background.Selected,\n\t\t\tDefaultTheme.SelectedBackground,\n\t\t)\n\t\tDefaultTheme.PrimaryBorder = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Border.Primary,\n\t\t\tDefaultTheme.PrimaryBorder,\n\t\t)\n\t\tDefaultTheme.FaintBorder = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Border.Faint,\n\t\t\tDefaultTheme.FaintBorder,\n\t\t)\n\t\tDefaultTheme.SecondaryBorder = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Border.Secondary,\n\t\t\tDefaultTheme.SecondaryBorder,\n\t\t)\n\t\tDefaultTheme.FaintText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Faint,\n\t\t\tDefaultTheme.FaintText,\n\t\t)\n\t\tDefaultTheme.PrimaryText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Primary,\n\t\t\tDefaultTheme.PrimaryText,\n\t\t)\n\t\tDefaultTheme.SecondaryText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Secondary,\n\t\t\tDefaultTheme.SecondaryText,\n\t\t)\n\t\tDefaultTheme.InvertedText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Inverted,\n\t\t\tDefaultTheme.InvertedText,\n\t\t)\n\t\tDefaultTheme.SuccessText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Success,\n\t\t\tDefaultTheme.SuccessText,\n\t\t)\n\t\tDefaultTheme.WarningText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Warning,\n\t\t\tDefaultTheme.WarningText,\n\t\t)\n\t\tlog.Debug(\"error text\",\n\t\t\t\"cfg\",\n\t\t\tcfg.Theme.Colors.Inline.Text.Error,\n\t\t\t\"default\",\n\t\t\tDefaultTheme.ErrorText,\n\t\t)\n\t\tDefaultTheme.ErrorText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Error,\n\t\t\tDefaultTheme.ErrorText,\n\t\t)\n\t\tDefaultTheme.ActorText = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Text.Actor,\n\t\t\tDefaultTheme.ActorText,\n\t\t)\n\t\tDefaultTheme.NewContributorIconColor = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Icon.NewContributor,\n\t\t\tDefaultTheme.NewContributorIconColor,\n\t\t)\n\t\tDefaultTheme.ContributorIconColor = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Icon.Contributor,\n\t\t\tDefaultTheme.ContributorIconColor,\n\t\t)\n\t\tDefaultTheme.CollaboratorIconColor = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Icon.Collaborator,\n\t\t\tDefaultTheme.CollaboratorIconColor,\n\t\t)\n\t\tDefaultTheme.MemberIconColor = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Icon.Member,\n\t\t\tDefaultTheme.MemberIconColor,\n\t\t)\n\t\tDefaultTheme.OwnerIconColor = _shimColor(\n\t\t\tcfg.Theme.Colors.Inline.Icon.Owner,\n\t\t\tDefaultTheme.OwnerIconColor,\n\t\t)\n\t}\n\n\tif cfg.ShowAuthorIcons && cfg.Theme.Icons != nil {\n\t\tDefaultTheme.NewContributorIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.NewContributor,\n\t\t\tDefaultTheme.NewContributorIcon,\n\t\t)\n\t\tDefaultTheme.ContributorIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.Contributor,\n\t\t\tDefaultTheme.ContributorIcon,\n\t\t)\n\t\tDefaultTheme.CollaboratorIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.Collaborator,\n\t\t\tDefaultTheme.CollaboratorIcon,\n\t\t)\n\t\tDefaultTheme.MemberIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.Member,\n\t\t\tDefaultTheme.MemberIcon,\n\t\t)\n\t\tDefaultTheme.OwnerIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.Owner,\n\t\t\tDefaultTheme.OwnerIcon,\n\t\t)\n\t\tDefaultTheme.UnknownRoleIcon = _shimIcon(\n\t\t\tcfg.Theme.Icons.Inline.UnknownRole,\n\t\t\tDefaultTheme.UnknownRoleIcon,\n\t\t)\n\t}\n\n\treturn *DefaultTheme\n}\n"
  },
  {
    "path": "internal/tui/theme/theme_test.go",
    "content": "package theme\n\nimport (\n\t\"image/color\"\n\t\"testing\"\n\n\t\"charm.land/log/v2\"\n\t\"github.com/charmbracelet/x/ansi\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n)\n\nfunc init() {\n\tlog.SetLevel(log.ErrorLevel)\n}\n\nfunc TestTheme(t *testing.T) {\n\tt.Run(\"Should use the configured colors\", func(t *testing.T) {\n\t\tcolors := config.ColorThemeConfig{\n\t\t\tInline: config.ColorTheme{\n\t\t\t\tText: config.ColorThemeText{\n\t\t\t\t\tPrimary:   \"#FF0000\",\n\t\t\t\t\tSecondary: \"\",\n\t\t\t\t\tInverted:  \"\",\n\t\t\t\t\tFaint:     \"\",\n\t\t\t\t\tWarning:   \"\",\n\t\t\t\t\tSuccess:   \"\",\n\t\t\t\t\tError:     \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tthm := config.ThemeConfig{\n\t\t\tColors: &colors,\n\t\t}\n\t\tcfg := config.Config{\n\t\t\tTheme: &thm,\n\t\t}\n\n\t\tparsed := ParseTheme(&cfg)\n\t\trequire.Equal(\n\t\t\tt,\n\t\t\tcolor.RGBA{R: 0xff, G: 0x0, B: 0x0, A: 0xff},\n\t\t\tparsed.PrimaryText.Dark,\n\t\t)\n\t})\n\n\tt.Run(\"Should use ANSI color indices\", func(t *testing.T) {\n\t\tcolors := config.ColorThemeConfig{\n\t\t\tInline: config.ColorTheme{\n\t\t\t\tText: config.ColorThemeText{\n\t\t\t\t\tPrimary: \"12\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tthm := config.ThemeConfig{\n\t\t\tColors: &colors,\n\t\t}\n\t\tcfg := config.Config{\n\t\t\tTheme: &thm,\n\t\t}\n\n\t\tparsed := ParseTheme(&cfg)\n\t\trequire.Equal(t, ansi.BasicColor(12), parsed.PrimaryText.Light)\n\t\trequire.Equal(t, ansi.BasicColor(12), parsed.PrimaryText.Dark)\n\t})\n}\n"
  },
  {
    "path": "internal/tui/ui.go",
    "content": "package tui\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"runtime/debug\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/bubbles/v2/key\"\n\t\"charm.land/bubbles/v2/spinner\"\n\ttea \"charm.land/bubbletea/v2\"\n\t\"charm.land/lipgloss/v2\"\n\tlog \"charm.land/log/v2\"\n\t\"github.com/atotto/clipboard\"\n\t\"github.com/cli/go-gh/v2/pkg/browser\"\n\tzone \"github.com/lrstanley/bubblezone/v2\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/git\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/common\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branch\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branchsidebar\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/footer\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issuessection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issueview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationssection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prssection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/reposection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/sidebar\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tabs\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tasks\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/constants\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/markdown\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\ntype Model struct {\n\tkeys             *keys.KeyMap\n\tsidebar          sidebar.Model\n\tprView           prview.Model\n\tissueSidebar     issueview.Model\n\tbranchSidebar    branchsidebar.Model\n\tnotificationView notificationview.Model\n\tcurrSectionId    int\n\tfooter           footer.Model\n\trepo             section.Section\n\tprs              []section.Section\n\tissues           []section.Section\n\tnotifications    []section.Section\n\ttabs             tabs.Model\n\tctx              *context.ProgramContext\n\ttaskSpinner      spinner.Model\n\ttasks            map[string]context.Task\n}\n\nfunc NewModel(location config.Location) Model {\n\ttaskSpinner := spinner.Model{Spinner: spinner.Dot}\n\tm := Model{\n\t\tkeys:        keys.Keys,\n\t\tsidebar:     sidebar.NewModel(),\n\t\ttaskSpinner: taskSpinner,\n\t\ttasks:       map[string]context.Task{},\n\t}\n\n\tversion := \"dev\"\n\tif info, ok := debug.ReadBuildInfo(); ok && info.Main.Sum != \"\" {\n\t\tversion = info.Main.Version\n\t}\n\n\tm.ctx = &context.ProgramContext{\n\t\tRepoPath:   location.RepoPath,\n\t\tConfigFlag: location.ConfigFlag,\n\t\tVersion:    version,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\tlog.Info(\"Starting task\", \"id\", task.Id)\n\t\t\ttask.StartTime = time.Now()\n\t\t\tm.tasks[task.Id] = task\n\t\t\treturn m.taskSpinner.Tick\n\t\t},\n\t\tTheme: *theme.DefaultTheme,\n\t}\n\n\tm.footer = footer.NewModel(m.ctx)\n\tm.prView = prview.NewModel(m.ctx)\n\tm.issueSidebar = issueview.NewModel(m.ctx)\n\tm.branchSidebar = branchsidebar.NewModel(m.ctx)\n\tm.notificationView = notificationview.NewModel(m.ctx)\n\tm.tabs = tabs.NewModel(m.ctx)\n\n\treturn m\n}\n\nfunc (m *Model) initScreen() tea.Msg {\n\tshowError := func(err error) {\n\t\tstyles := log.DefaultStyles()\n\t\tstyles.Key = lipgloss.NewStyle().\n\t\t\tForeground(lipgloss.Color(\"1\")).\n\t\t\tBold(true)\n\t\tstyles.Separator = lipgloss.NewStyle()\n\n\t\tlogger := log.New(os.Stderr)\n\t\tlogger.SetStyles(styles)\n\t\tlogger.SetTimeFormat(time.RFC3339)\n\t\tlogger.SetReportTimestamp(true)\n\t\tlogger.SetPrefix(\"Reading config file\")\n\t\tlogger.SetReportCaller(true)\n\n\t\tlogger.\n\t\t\tFatal(\n\t\t\t\t\"failed parsing config file\",\n\t\t\t\t\"location\",\n\t\t\t\tm.ctx.ConfigFlag,\n\t\t\t\t\"err\",\n\t\t\t\terr,\n\t\t\t)\n\t}\n\n\tcfg, err := config.ParseConfig(\n\t\tconfig.Location{RepoPath: m.ctx.RepoPath, ConfigFlag: m.ctx.ConfigFlag},\n\t)\n\tif err != nil {\n\t\tshowError(err)\n\t\treturn initMsg{Config: cfg}\n\t}\n\n\tvar url string\n\tif config.IsFeatureEnabled(config.FF_REPO_VIEW) && m.ctx.RepoPath != \"\" {\n\t\tres, err := git.GetOriginUrl(m.ctx.RepoPath)\n\t\tif err != nil {\n\t\t\tshowError(err)\n\t\t\treturn initMsg{Config: cfg}\n\t\t}\n\t\turl = res\n\t}\n\n\terr = keys.Rebind(\n\t\tcfg.Keybindings.Universal,\n\t\tcfg.Keybindings.Issues,\n\t\tcfg.Keybindings.Prs,\n\t\tcfg.Keybindings.Branches,\n\t\tcfg.Keybindings.Notifications,\n\t)\n\tif err != nil {\n\t\tshowError(err)\n\t}\n\n\treturn initMsg{Config: cfg, RepoUrl: url}\n}\n\nfunc (m Model) Init() tea.Cmd {\n\treturn tea.Batch(tea.RequestBackgroundColor, m.initScreen)\n}\n\nfunc (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {\n\tvar (\n\t\tcmd             tea.Cmd\n\t\ttabsCmd         tea.Cmd\n\t\tsidebarCmd      tea.Cmd\n\t\tprViewCmd       tea.Cmd\n\t\tissueSidebarCmd tea.Cmd\n\t\tfooterCmd       tea.Cmd\n\t\tcmds            []tea.Cmd\n\t\tcurrSection     = m.getCurrSection()\n\t\tcurrRowData     = m.getCurrRowData()\n\t)\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tlog.Info(\"Key pressed\", \"key\", msg.String())\n\t\tm.ctx.Error = nil\n\n\t\tif currSection != nil && (currSection.IsSearchFocused() ||\n\t\t\tcurrSection.IsPromptConfirmationFocused()) {\n\t\t\tcmd = m.updateSection(currSection.GetId(), currSection.GetType(), msg)\n\t\t\treturn m, cmd\n\t\t}\n\n\t\tif m.prView.IsTextInputBoxFocused() {\n\t\t\tm.prView, cmd = m.prView.Update(msg)\n\t\t\tm.syncSidebar()\n\t\t\treturn m, cmd\n\t\t}\n\n\t\tif m.issueSidebar.IsTextInputBoxFocused() {\n\t\t\tm.issueSidebar, cmd, _ = m.issueSidebar.Update(msg)\n\t\t\tm.syncSidebar()\n\t\t\treturn m, cmd\n\t\t}\n\n\t\tif m.footer.ShowConfirmQuit && (msg.String() == \"y\" || msg.String() == \"enter\") {\n\t\t\treturn m, tea.Quit\n\t\t} else if m.footer.ShowConfirmQuit {\n\t\t\tm.footer.SetShowConfirmQuit(false)\n\t\t\treturn m, nil\n\t\t}\n\n\t\t// Handle notification PR/Issue action confirmation\n\t\tif m.notificationView.HasPendingAction() {\n\t\t\tvar action string\n\t\t\tm.notificationView, action = m.notificationView.Update(msg)\n\t\t\tm.footer.SetLeftSection(\"\")\n\t\t\tif action != \"\" {\n\t\t\t\treturn m, m.executeNotificationAction(action)\n\t\t\t}\n\t\t\treturn m, nil\n\t\t}\n\n\t\tswitch {\n\t\tcase m.isUserDefinedKeybinding(msg):\n\t\t\tcmd = m.executeKeybinding(msg.String())\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, m.keys.PrevSection):\n\t\t\tprevSection := m.getSectionAt(m.getPrevSectionId())\n\t\t\tif prevSection != nil {\n\t\t\t\tm.setCurrSectionId(prevSection.GetId())\n\t\t\t\tcmd = m.onViewedRowChanged()\n\t\t\t}\n\n\t\tcase key.Matches(msg, m.keys.NextSection):\n\t\t\tnextSectionId := m.getNextSectionId()\n\t\t\tnextSection := m.getSectionAt(nextSectionId)\n\t\t\tif nextSection != nil {\n\t\t\t\tm.setCurrSectionId(nextSection.GetId())\n\t\t\t\tcmd = m.onViewedRowChanged()\n\t\t\t}\n\n\t\tcase key.Matches(msg, m.keys.Down):\n\t\t\tprevRow := currSection.CurrRow()\n\t\t\tnextRow := currSection.NextRow()\n\t\t\tif prevRow != nextRow && nextRow == currSection.NumRows()-1 &&\n\t\t\t\tm.ctx.View != config.RepoView {\n\t\t\t\tcmds = append(cmds, currSection.FetchNextPageSectionRows()...)\n\t\t\t}\n\t\t\tcmd = m.onViewedRowChanged()\n\n\t\tcase key.Matches(msg, m.keys.Up):\n\t\t\tcurrSection.PrevRow()\n\t\t\tcmd = m.onViewedRowChanged()\n\n\t\tcase key.Matches(msg, m.keys.FirstLine):\n\t\t\tcurrSection.FirstItem()\n\t\t\tcmd = m.onViewedRowChanged()\n\n\t\tcase key.Matches(msg, m.keys.LastLine):\n\t\t\tif currSection.CurrRow()+1 < currSection.NumRows() {\n\t\t\t\tcmds = append(cmds, currSection.FetchNextPageSectionRows()...)\n\t\t\t}\n\t\t\tcurrSection.LastItem()\n\t\t\tcmd = m.onViewedRowChanged()\n\n\t\tcase key.Matches(msg, m.keys.TogglePreview):\n\t\t\tm.sidebar.IsOpen = !m.sidebar.IsOpen\n\t\t\tm.syncMainContentWidth()\n\n\t\tcase key.Matches(msg, m.keys.Refresh):\n\t\t\tdata.ClearEnrichmentCache()\n\t\t\tcurrSection.ResetFilters()\n\t\t\tcurrSection.ResetRows()\n\t\t\tm.syncSidebar()\n\t\t\tcurrSection.SetIsLoading(true)\n\t\t\tcmds = append(cmds, currSection.FetchNextPageSectionRows()...)\n\n\t\tcase key.Matches(msg, m.keys.RefreshAll):\n\t\t\tdata.ClearEnrichmentCache()\n\t\t\tnewSections, fetchSectionsCmds := m.fetchAllViewSections()\n\t\t\tm.setCurrentViewSections(newSections)\n\t\t\tcmds = append(cmds, fetchSectionsCmds)\n\n\t\tcase key.Matches(msg, m.keys.Redraw):\n\t\t// TODO: this doesn't exist in bubbletea v2\n\t\t// can't find a way to just ask to send bubbletea's internal repaintMsg{},\n\t\t// so this seems like the lightest-weight alternative\n\t\t// return m, tea.Batch(tea.ExitAltScreen, tea.EnterAltScreen)\n\n\t\tcase key.Matches(msg, m.keys.Search):\n\t\t\tif currSection != nil {\n\t\t\t\tcmd = currSection.SetIsSearching(true)\n\t\t\t\treturn m, cmd\n\t\t\t}\n\n\t\tcase key.Matches(msg, m.keys.Help):\n\t\t\tif !m.footer.ShowAll {\n\t\t\t\tm.ctx.MainContentHeight = m.ctx.MainContentHeight +\n\t\t\t\t\tcommon.FooterHeight - common.ExpandedHelpHeight\n\t\t\t} else {\n\t\t\t\tm.ctx.MainContentHeight = m.ctx.MainContentHeight +\n\t\t\t\t\tcommon.ExpandedHelpHeight - common.FooterHeight\n\t\t\t}\n\t\t\tm.footer.ShowAll = !m.footer.ShowAll\n\n\t\tcase key.Matches(msg, m.keys.CopyNumber):\n\t\t\tvar cmd tea.Cmd\n\t\t\tif currRowData == nil || reflect.ValueOf(currRowData).IsNil() {\n\t\t\t\tcmd = m.notifyErr(\"Current selection isn't associated with a PR/Issue\")\n\t\t\t\treturn m, cmd\n\t\t\t}\n\t\t\tnumber := fmt.Sprint(currRowData.GetNumber())\n\t\t\terr := clipboard.WriteAll(number)\n\t\t\tif err != nil {\n\t\t\t\tcmd = m.notifyErr(fmt.Sprintf(\"Failed copying to clipboard %v\", err))\n\t\t\t} else {\n\t\t\t\tcmd = m.notify(fmt.Sprintf(\"Copied %s to clipboard\", number))\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, m.keys.CopyUrl):\n\t\t\tvar cmd tea.Cmd\n\t\t\tif currRowData == nil || reflect.ValueOf(currRowData).IsNil() {\n\t\t\t\tcmd = m.notifyErr(\"Current selection isn't associated with a PR/Issue\")\n\t\t\t\treturn m, cmd\n\t\t\t}\n\t\t\turl := currRowData.GetUrl()\n\t\t\terr := clipboard.WriteAll(url)\n\t\t\tif err != nil {\n\t\t\t\tcmd = m.notifyErr(fmt.Sprintf(\"Failed copying to clipboard %v\", err))\n\t\t\t} else {\n\t\t\t\tcmd = m.notify(fmt.Sprintf(\"Copied %s to clipboard\", url))\n\t\t\t}\n\t\t\treturn m, cmd\n\n\t\tcase key.Matches(msg, m.keys.Quit):\n\t\t\tif !m.ctx.Config.ConfirmQuit {\n\t\t\t\treturn m, tea.Quit\n\t\t\t}\n\n\t\t\tm.footer.SetShowConfirmQuit(true)\n\n\t\tcase m.ctx.View == config.RepoView:\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, m.keys.OpenGithub):\n\t\t\t\tcmds = append(cmds, m.repo.(*reposection.Model).OpenGithub())\n\n\t\t\tcase key.Matches(msg, keys.BranchKeys.Delete):\n\t\t\t\tif currSection != nil {\n\t\t\t\t\tcurrSection.SetPromptConfirmationAction(\"delete\")\n\t\t\t\t\tcmd = currSection.SetIsPromptConfirmationShown(true)\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.BranchKeys.New):\n\t\t\t\tif currSection != nil {\n\t\t\t\t\tcurrSection.SetPromptConfirmationAction(\"new\")\n\t\t\t\t\tcmd = currSection.SetIsPromptConfirmationShown(true)\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.BranchKeys.CreatePr):\n\t\t\t\tif currSection != nil {\n\t\t\t\t\tcurrSection.SetPromptConfirmationAction(\"create_pr\")\n\t\t\t\t\tcmd = currSection.SetIsPromptConfirmationShown(true)\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.BranchKeys.ViewPRs):\n\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\t\t\t}\n\t\tcase m.ctx.View == config.PRsView:\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, keys.PRKeys.PrevSidebarTab),\n\t\t\t\tkey.Matches(msg, keys.PRKeys.NextSidebarTab):\n\t\t\t\tvar scmds []tea.Cmd\n\t\t\t\tvar scmd tea.Cmd\n\t\t\t\tm.prView, scmd = m.prView.Update(msg)\n\t\t\t\tscmds = append(scmds, scmd)\n\t\t\t\tm.syncSidebar()\n\t\t\t\treturn m, tea.Batch(scmds...)\n\n\t\t\tcase key.Matches(msg, m.keys.OpenGithub):\n\t\t\t\tcmds = append(cmds, m.openBrowser())\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Approve):\n\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsApproving)\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Assign):\n\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsAssigning)\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Unassign):\n\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsUnassigning)\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Comment):\n\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsCommenting)\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Close):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"close\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Ready):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"ready\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Reopen):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"reopen\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Merge):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"merge\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.Update):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"update\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.ApproveWorkflows):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"approveWorkflows\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.ViewIssues):\n\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.SummaryViewMore):\n\t\t\t\tm.prView.SetSummaryViewMore()\n\t\t\t\tm.syncSidebar()\n\t\t\t\treturn m, nil\n\t\t\t}\n\t\tcase m.ctx.View == config.IssuesView:\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, m.keys.OpenGithub):\n\t\t\t\tcmds = append(cmds, m.openBrowser())\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Label):\n\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsLabeling)\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Assign):\n\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsAssigning)\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Unassign):\n\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsUnassigning)\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Comment):\n\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsCommenting)\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Close):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"close\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.Reopen):\n\t\t\t\tif currRowData != nil {\n\t\t\t\t\tcmd = m.promptConfirmation(currSection, \"reopen\")\n\t\t\t\t}\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.IssueKeys.ViewPRs):\n\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\t\t\t}\n\t\tcase m.ctx.View == config.NotificationsView:\n\t\t\tswitch {\n\t\t\tcase key.Matches(msg, m.keys.OpenGithub):\n\t\t\t\tcmds = append(cmds, m.openBrowser())\n\t\t\t\treturn m, tea.Batch(cmds...)\n\n\t\t\t// Handle Enter to (re)load notification content - check before subject handlers\n\t\t\t// so Enter always works, even after viewing a notification\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.View):\n\t\t\t\tcmds = append(cmds, m.loadNotificationContent())\n\n\t\t\t// Return from PR/Issue detail back to the default notification prompt\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.BackToNotification):\n\t\t\t\treturn m, m.backToNotification()\n\n\t\t\t// PR keybindings when viewing a PR notification\n\t\t\tcase m.notificationView.GetSubjectPR() != nil:\n\t\t\t\t// Check for PR actions first (before updating prView)\n\t\t\t\tif !m.prView.IsTextInputBoxFocused() {\n\t\t\t\t\taction := prview.MsgToAction(msg)\n\t\t\t\t\tif action != nil {\n\t\t\t\t\t\tswitch action.Type {\n\t\t\t\t\t\tcase prview.PRActionApprove:\n\t\t\t\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsApproving)\n\n\t\t\t\t\t\tcase prview.PRActionAssign:\n\t\t\t\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsAssigning)\n\n\t\t\t\t\t\tcase prview.PRActionUnassign:\n\t\t\t\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsUnassigning)\n\n\t\t\t\t\t\tcase prview.PRActionComment:\n\t\t\t\t\t\t\treturn m, m.openSidebarForPRInput(m.prView.SetIsCommenting)\n\n\t\t\t\t\t\tcase prview.PRActionDiff:\n\t\t\t\t\t\t\tif pr := m.notificationView.GetSubjectPR(); pr != nil {\n\t\t\t\t\t\t\t\tcmd = common.DiffPR(pr.GetNumber(), pr.GetRepoNameWithOwner(),\n\t\t\t\t\t\t\t\t\tm.ctx.Config.GetFullScreenDiffPagerEnv())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionCheckout:\n\t\t\t\t\t\t\tif pr := m.notificationView.GetSubjectPR(); pr != nil {\n\t\t\t\t\t\t\t\tcmd, _ = notificationssection.CheckoutPR(\n\t\t\t\t\t\t\t\t\tm.ctx, pr.GetNumber(), pr.GetRepoNameWithOwner())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionClose:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"close\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionReady:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"ready\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionReopen:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"reopen\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionMerge:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"merge\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionUpdate:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"update\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionApproveWorkflows:\n\t\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationPR(\"approveWorkflows\")\n\t\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\t\tcase prview.PRActionSummaryViewMore:\n\t\t\t\t\t\t\tm.prView.SetSummaryViewMore()\n\t\t\t\t\t\t\tm.syncSidebar()\n\t\t\t\t\t\t\treturn m, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle 's' key to switch views\n\t\t\t\tif key.Matches(msg, keys.PRKeys.ViewIssues) {\n\t\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\t\t\t\t}\n\n\t\t\t\t// No action matched - update prView for navigation (tab switching, scrolling)\n\t\t\t\tvar prCmd tea.Cmd\n\t\t\t\tm.prView, prCmd = m.prView.Update(msg)\n\t\t\t\tm.syncSidebar()\n\t\t\t\tcmds = append(cmds, prCmd)\n\n\t\t\t// Issue keybindings when viewing an Issue notification\n\t\t\tcase m.notificationView.GetSubjectIssue() != nil:\n\t\t\t\tvar issueCmd tea.Cmd\n\t\t\t\tvar action *issueview.IssueAction\n\t\t\t\tm.issueSidebar, issueCmd, action = m.issueSidebar.Update(msg)\n\n\t\t\t\tif action != nil {\n\t\t\t\t\tswitch action.Type {\n\t\t\t\t\tcase issueview.IssueActionLabel:\n\t\t\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsLabeling)\n\n\t\t\t\t\tcase issueview.IssueActionAssign:\n\t\t\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsAssigning)\n\n\t\t\t\t\tcase issueview.IssueActionUnassign:\n\t\t\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsUnassigning)\n\n\t\t\t\t\tcase issueview.IssueActionComment:\n\t\t\t\t\t\treturn m, m.openSidebarForInput(m.issueSidebar.SetIsCommenting)\n\n\t\t\t\t\tcase issueview.IssueActionClose:\n\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationIssue(\"close\")\n\t\t\t\t\t\treturn m, cmd\n\n\t\t\t\t\tcase issueview.IssueActionReopen:\n\t\t\t\t\t\tcmd = m.promptConfirmationForNotificationIssue(\"reopen\")\n\t\t\t\t\t\treturn m, cmd\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle 's' key to switch views\n\t\t\t\tif key.Matches(msg, keys.IssueKeys.ViewPRs) {\n\t\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\t\t\t\t}\n\n\t\t\t\t// Sync sidebar and return issueCmd for navigation\n\t\t\t\tm.syncSidebar()\n\t\t\t\tcmds = append(cmds, issueCmd)\n\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.MarkAsDone):\n\t\t\t\tcmds = append(\n\t\t\t\t\tcmds,\n\t\t\t\t\tm.updateSection(currSection.GetId(), currSection.GetType(), msg),\n\t\t\t\t)\n\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.MarkAllAsDone):\n\t\t\t\tcmd = m.promptConfirmation(currSection, \"done_all\")\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.Open):\n\t\t\t\tcmd = m.updateSection(currSection.GetId(), currSection.GetType(), msg)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.NotificationKeys.SortByRepo):\n\t\t\t\tcmd = m.updateSection(currSection.GetId(), currSection.GetType(), msg)\n\t\t\t\treturn m, cmd\n\n\t\t\tcase key.Matches(msg, keys.PRKeys.ViewIssues):\n\t\t\t\tcmds = append(cmds, m.switchSelectedView())\n\t\t\t}\n\t\t}\n\n\tcase initMsg:\n\t\tm.ctx.Config = &msg.Config\n\t\tm.ctx.RepoUrl = msg.RepoUrl\n\t\tm.ctx.Theme = theme.ParseTheme(m.ctx.Config)\n\t\tm.ctx.Styles = context.InitStyles(m.ctx.Theme)\n\t\tm.taskSpinner.Style = lipgloss.NewStyle().\n\t\t\tBackground(m.ctx.Theme.SelectedBackground)\n\n\t\tm.ctx.View = m.ctx.Config.Defaults.View\n\t\tm.currSectionId = m.getCurrentViewDefaultSection()\n\t\tm.sidebar.IsOpen = msg.Config.Defaults.Preview.Open\n\t\tm.syncMainContentWidth()\n\n\t\tnewSections, fetchSectionsCmds := m.fetchAllViewSections()\n\t\tm.setCurrentViewSections(newSections)\n\t\tm.tabs.SetCurrSectionId(1)\n\t\tcmds = append(cmds, fetchSectionsCmds, m.tabs.Init(), fetchUser,\n\t\t\tm.doRefreshAtInterval(), m.doUpdateFooterAtInterval())\n\n\tcase intervalRefresh:\n\t\tnewSections, fetchSectionsCmds := m.fetchAllViewSections()\n\t\tm.setCurrentViewSections(newSections)\n\t\tcmds = append(cmds, fetchSectionsCmds, m.doRefreshAtInterval())\n\n\tcase userFetchedMsg:\n\t\tm.ctx.User = msg.user\n\n\tcase constants.TaskFinishedMsg:\n\t\ttask, ok := m.tasks[msg.TaskId]\n\t\tif ok {\n\t\t\tlog.Info(\"Task finished\", \"id\", task.Id)\n\t\t\tif msg.Err != nil {\n\t\t\t\tlog.Error(\"Task finished with error\", \"id\", task.Id, \"err\", msg.Err)\n\t\t\t\ttask.State = context.TaskError\n\t\t\t\ttask.Error = msg.Err\n\t\t\t} else {\n\t\t\t\ttask.State = context.TaskFinished\n\t\t\t}\n\t\t\tnow := time.Now()\n\t\t\ttask.FinishedTime = &now\n\t\t\tm.tasks[msg.TaskId] = task\n\t\t\tclear := tea.Tick(2*time.Second, func(t time.Time) tea.Msg {\n\t\t\t\treturn constants.ClearTaskMsg{TaskId: msg.TaskId}\n\t\t\t})\n\t\t\tcmds = append(cmds, clear)\n\n\t\t\tscmd := m.updateSection(msg.SectionId, msg.SectionType, msg.Msg)\n\t\t\tcmds = append(cmds, scmd)\n\n\t\t\tsyncCmd := m.syncSidebar()\n\t\t\tcmds = append(cmds, syncCmd)\n\t\t}\n\n\tcase prview.EnrichedPrMsg:\n\t\tif msg.Err == nil {\n\t\t\tm.prView.SetEnrichedPR(msg.Data)\n\t\t\tm.prs[msg.Id].(*prssection.Model).EnrichPR(msg.Data)\n\t\t\tsyncCmd := m.syncSidebar()\n\t\t\tcmds = append(cmds, syncCmd)\n\t\t} else {\n\t\t\tlog.Error(\"failed enriching pr\", \"err\", msg.Err)\n\t\t}\n\n\tcase notificationPRFetchedMsg:\n\t\tif msg.Err == nil {\n\t\t\t// Convert enriched PR to prrow.Data for display\n\t\t\tprData := msg.PR.ToPullRequestData()\n\t\t\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\t\t\tPrimary:    &prData,\n\t\t\t\tEnriched:   msg.PR,\n\t\t\t\tIsEnriched: true,\n\t\t\t}, msg.NotificationId)\n\t\t\tkeys.SetNotificationSubject(keys.NotificationSubjectPR)\n\t\t\t// Update sidebar with PR view\n\t\t\twidth := m.sidebar.GetSidebarContentWidth()\n\t\t\tm.prView.SetSectionId(0)\n\t\t\tm.prView.SetRow(m.notificationView.GetSubjectPR())\n\t\t\tm.prView.SetWidth(width)\n\t\t\tm.prView.SetEnrichedPR(msg.PR)\n\t\t\t// Switch to Activity tab and scroll to bottom if there's a latest comment\n\t\t\t// (indicates there's new activity to show)\n\t\t\tif msg.LatestCommentUrl != \"\" {\n\t\t\t\tm.prView.GoToActivityTab()\n\t\t\t\tm.sidebar.SetContent(m.prView.View())\n\t\t\t\tm.sidebar.ScrollToBottom()\n\t\t\t} else {\n\t\t\t\t// For notifications without comments (new PRs, state changes, etc.)\n\t\t\t\t// show the Overview tab without scrolling\n\t\t\t\tm.prView.GoToFirstTab()\n\t\t\t\tm.sidebar.SetContent(m.prView.View())\n\t\t\t}\n\t\t\tm.markNotificationAsRead(msg.NotificationId)\n\t\t} else {\n\t\t\tlog.Error(\"failed fetching notification PR\", \"err\", msg.Err)\n\t\t}\n\n\tcase notificationIssueFetchedMsg:\n\t\tif msg.Err == nil {\n\t\t\tm.notificationView.SetSubjectIssue(&msg.Issue, msg.NotificationId)\n\t\t\tkeys.SetNotificationSubject(keys.NotificationSubjectIssue)\n\t\t\t// Update sidebar with Issue view\n\t\t\twidth := m.sidebar.GetSidebarContentWidth()\n\t\t\tm.issueSidebar.SetSectionId(0)\n\t\t\tm.issueSidebar.SetRow(m.notificationView.GetSubjectIssue())\n\t\t\tm.issueSidebar.SetWidth(width)\n\t\t\tm.sidebar.SetContent(m.issueSidebar.View())\n\t\t\t// Scroll to bottom if there's a latest comment (indicates new activity)\n\t\t\tif msg.LatestCommentUrl != \"\" {\n\t\t\t\tm.sidebar.ScrollToBottom()\n\t\t\t}\n\t\t\tm.markNotificationAsRead(msg.NotificationId)\n\t\t} else {\n\t\t\tlog.Error(\"failed fetching notification Issue\", \"err\", msg.Err)\n\t\t}\n\n\tcase notificationssection.UpdateNotificationReadStateMsg:\n\t\tm.updateNotificationSections(msg)\n\n\tcase notificationssection.UpdateNotificationCommentsMsg:\n\t\tcmds = append(cmds, m.updateNotificationSections(msg))\n\n\tcase spinner.TickMsg:\n\t\tif len(m.tasks) > 0 {\n\t\t\ttaskSpinner, internalTickCmd := m.taskSpinner.Update(msg)\n\t\t\tm.taskSpinner = taskSpinner\n\t\t\trTask := m.renderRunningTask()\n\t\t\tm.footer.SetRightSection(rTask)\n\t\t\tcmd = internalTickCmd\n\t\t}\n\n\tcase constants.ClearTaskMsg:\n\t\tm.footer.SetRightSection(\"\")\n\t\tdelete(m.tasks, msg.TaskId)\n\n\tcase section.SectionMsg:\n\t\tcmd = m.updateRelevantSection(msg)\n\n\t\tif msg.Id == m.currSectionId {\n\t\t\tcmds = append(cmds, m.onViewedRowChanged())\n\t\t}\n\n\tcase execProcessFinishedMsg, tea.FocusMsg:\n\t\tif currSection != nil {\n\t\t\tcmds = append(cmds, currSection.FetchNextPageSectionRows()...)\n\t\t}\n\n\tcase tea.MouseClickMsg:\n\t\tif msg.Button != tea.MouseLeft {\n\t\t\treturn m, nil\n\t\t}\n\t\tif zone.Get(\"donate\").InBounds(msg) {\n\t\t\tlog.Info(\"Donate clicked\", \"msg\", msg)\n\t\t\topenCmd := func() tea.Msg {\n\t\t\t\tb := browser.New(\"\", os.Stdout, os.Stdin)\n\t\t\t\terr := b.Browse(\"https://github.com/sponsors/dlvhdr\")\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn constants.ErrMsg{Err: err}\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tcmds = append(cmds, openCmd)\n\t\t}\n\n\tcase tea.WindowSizeMsg:\n\t\tm.onWindowSizeChanged(msg)\n\n\tcase tea.BackgroundColorMsg:\n\t\tmarkdown.InitializeMarkdownStyle(msg.IsDark())\n\n\tcase updateFooterMsg:\n\t\tcmds = append(cmds, cmd, m.doUpdateFooterAtInterval())\n\n\tcase constants.ErrMsg:\n\t\tm.ctx.Error = msg.Err\n\t}\n\n\tm.syncProgramContext()\n\n\tvar bsCmd tea.Cmd\n\tm.branchSidebar, bsCmd = m.branchSidebar.Update(msg)\n\tcmds = append(cmds, bsCmd)\n\n\tm.sidebar, sidebarCmd = m.sidebar.Update(msg)\n\n\tif m.prView.IsTextInputBoxFocused() {\n\t\tm.prView, prViewCmd = m.prView.Update(msg)\n\t\tm.syncSidebar()\n\t}\n\n\tif m.issueSidebar.IsTextInputBoxFocused() {\n\t\tm.issueSidebar, issueSidebarCmd, _ = m.issueSidebar.Update(msg)\n\t\tm.syncSidebar()\n\t}\n\n\tif currSection != nil {\n\t\tif currSection.IsPromptConfirmationFocused() {\n\t\t\tm.footer.SetLeftSection(currSection.GetPromptConfirmation())\n\t\t}\n\n\t\tif !currSection.IsPromptConfirmationFocused() {\n\t\t\tm.footer.SetLeftSection(currSection.GetPagerContent())\n\t\t}\n\t}\n\n\ttm, tabsCmd := m.tabs.Update(msg)\n\tm.tabs = tm\n\n\tsectionCmd := m.updateCurrentSection(msg)\n\tcmds = append(\n\t\tcmds,\n\t\tcmd,\n\t\ttabsCmd,\n\t\tsidebarCmd,\n\t\tfooterCmd,\n\t\tsectionCmd,\n\t\tprViewCmd,\n\t\tissueSidebarCmd,\n\t)\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m Model) View() tea.View {\n\tvar v tea.View\n\tv.AltScreen = true\n\tv.ReportFocus = true\n\tv.MouseMode = tea.MouseModeCellMotion\n\n\tif m.ctx.Config == nil {\n\t\tv.Content = lipgloss.Place(\n\t\t\tm.ctx.ScreenWidth,\n\t\t\tm.ctx.ScreenHeight,\n\t\t\tlipgloss.Center,\n\t\t\tlipgloss.Center,\n\t\t\t\"Reading config...\",\n\t\t)\n\t\treturn v\n\t}\n\n\ts := strings.Builder{}\n\tif m.ctx.View != config.RepoView {\n\t\ts.WriteString(m.tabs.View())\n\t}\n\ts.WriteString(\"\\n\")\n\tcontent := \"No sections defined\"\n\tcurrSection := m.getCurrSection()\n\tif currSection != nil {\n\t\tcontent = lipgloss.JoinHorizontal(\n\t\t\tlipgloss.Top,\n\t\t\tm.getCurrSection().View(),\n\t\t\tm.sidebar.View(),\n\t\t)\n\t}\n\ts.WriteString(content)\n\ts.WriteString(\"\\n\")\n\tif m.ctx.Error != nil {\n\t\ts.WriteString(\n\t\t\tm.ctx.Styles.Common.ErrorStyle.\n\t\t\t\tWidth(m.ctx.ScreenWidth).\n\t\t\t\tRender(fmt.Sprintf(\"%s %s\",\n\t\t\t\t\tm.ctx.Styles.Common.FailureGlyph,\n\t\t\t\t\tlipgloss.NewStyle().\n\t\t\t\t\t\tForeground(m.ctx.Theme.ErrorText).\n\t\t\t\t\t\tRender(m.ctx.Error.Error()),\n\t\t\t\t)),\n\t\t)\n\t} else {\n\t\ts.WriteString(m.footer.View())\n\t}\n\n\tv.SetContent(zone.Scan(s.String()))\n\treturn v\n}\n\ntype initMsg struct {\n\tConfig  config.Config\n\tRepoUrl string\n}\n\n// Message types for notification subject fetching\ntype notificationPRFetchedMsg struct {\n\tNotificationId   string\n\tPR               data.EnrichedPullRequestData\n\tLatestCommentUrl string\n\tErr              error\n}\n\ntype notificationIssueFetchedMsg struct {\n\tNotificationId   string\n\tIssue            data.IssueData\n\tLatestCommentUrl string\n\tErr              error\n}\n\nfunc (m *Model) setCurrSectionId(newSectionId int) {\n\tm.currSectionId = newSectionId\n\tm.tabs.SetCurrSectionId(newSectionId)\n}\n\nfunc (m *Model) updateNotificationSections(msg tea.Msg) tea.Cmd {\n\tvar cmds []tea.Cmd\n\tfor i := range m.notifications {\n\t\tif m.notifications[i] != nil {\n\t\t\tvar cmd tea.Cmd\n\t\t\tm.notifications[i], cmd = m.notifications[i].Update(msg)\n\t\t\tcmds = append(cmds, cmd)\n\t\t}\n\t}\n\treturn tea.Batch(cmds...)\n}\n\nfunc (m *Model) markNotificationAsRead(notificationId string) {\n\treadStateMsg := notificationssection.UpdateNotificationReadStateMsg{\n\t\tId:     notificationId,\n\t\tUnread: false,\n\t}\n\tm.updateNotificationSections(readStateMsg)\n}\n\nfunc (m *Model) onViewedRowChanged() tea.Cmd {\n\tm.prView.SetSummaryViewLess()\n\tm.prView.GoToFirstTab()\n\tsidebarCmd := m.syncSidebar()\n\tenrichCmd := m.prView.EnrichCurrRow()\n\tm.sidebar.ScrollToTop()\n\tm.notificationView.ResetSubject()\n\tkeys.SetNotificationSubject(keys.NotificationSubjectNone)\n\treturn tea.Batch(sidebarCmd, enrichCmd)\n}\n\nfunc (m *Model) onWindowSizeChanged(msg tea.WindowSizeMsg) {\n\tlog.Info(\"window size changed\", \"width\", msg.Width, \"height\", msg.Height)\n\tm.footer.SetWidth(msg.Width)\n\tm.ctx.ScreenWidth = msg.Width\n\tm.ctx.ScreenHeight = msg.Height\n\tif m.footer.ShowAll {\n\t\tm.ctx.MainContentHeight = msg.Height - common.TabsHeight - common.ExpandedHelpHeight\n\t} else {\n\t\tm.ctx.MainContentHeight = msg.Height - common.TabsHeight - common.FooterHeight\n\t}\n\tm.syncMainContentWidth()\n}\n\nfunc (m *Model) syncProgramContext() {\n\tfor _, section := range m.getCurrentViewSections() {\n\t\tsection.UpdateProgramContext(m.ctx)\n\t}\n\tm.tabs.UpdateProgramContext(m.ctx)\n\tm.footer.UpdateProgramContext(m.ctx)\n\tm.sidebar.UpdateProgramContext(m.ctx)\n\tm.prView.UpdateProgramContext(m.ctx)\n\tm.issueSidebar.UpdateProgramContext(m.ctx)\n\tm.branchSidebar.UpdateProgramContext(m.ctx)\n\tm.notificationView.UpdateProgramContext(m.ctx)\n}\n\nfunc (m *Model) updateSection(id int, sType string, msg tea.Msg) (cmd tea.Cmd) {\n\tvar updatedSection section.Section\n\tswitch sType {\n\tcase reposection.SectionType:\n\t\tm.repo, cmd = m.repo.Update(msg)\n\n\tcase notificationssection.SectionType:\n\t\tif id < len(m.notifications) && m.notifications[id] != nil {\n\t\t\tm.notifications[id], cmd = m.notifications[id].Update(msg)\n\t\t}\n\n\tcase prssection.SectionType:\n\t\tupdatedSection, cmd = m.prs[id].Update(msg)\n\t\tm.prs[id] = updatedSection\n\tcase issuessection.SectionType:\n\t\tupdatedSection, cmd = m.issues[id].Update(msg)\n\t\tm.issues[id] = updatedSection\n\t}\n\n\tcurrSection := m.getCurrSection()\n\tif currSection != nil && id == currSection.GetId() {\n\t\tif _, ok := msg.(prssection.SectionPullRequestsFetchedMsg); ok {\n\t\t\tcmd = m.onViewedRowChanged()\n\t\t}\n\t}\n\n\treturn cmd\n}\n\nfunc (m *Model) updateRelevantSection(msg section.SectionMsg) (cmd tea.Cmd) {\n\treturn m.updateSection(msg.Id, msg.Type, msg)\n}\n\nfunc (m *Model) updateCurrentSection(msg tea.Msg) (cmd tea.Cmd) {\n\tsection := m.getCurrSection()\n\tif section == nil {\n\t\treturn nil\n\t}\n\treturn m.updateSection(section.GetId(), section.GetType(), msg)\n}\n\nfunc (m *Model) syncMainContentWidth() {\n\tsideBarOffset := 0\n\tif m.sidebar.IsOpen {\n\t\tw := m.ctx.Config.Defaults.Preview.Width\n\t\tif w > 0 && w < 1 {\n\t\t\tw *= float64(m.ctx.ScreenWidth)\n\t\t}\n\t\tm.ctx.DynamicPreviewWidth = min(int(w), m.ctx.ScreenWidth)\n\t\tsideBarOffset = m.ctx.DynamicPreviewWidth\n\t}\n\tm.ctx.MainContentWidth = m.ctx.ScreenWidth - sideBarOffset\n\tm.ctx.SidebarOpen = m.sidebar.IsOpen\n}\n\nfunc (m *Model) openSidebarForPRInput(setFunc func(bool) tea.Cmd) tea.Cmd {\n\tm.prView.GoToFirstTab()\n\treturn m.openSidebarForInput(setFunc)\n}\n\nfunc (m *Model) openSidebarForInput(setFunc func(bool) tea.Cmd) tea.Cmd {\n\tm.sidebar.IsOpen = true\n\tcmd := setFunc(true)\n\tm.syncMainContentWidth()\n\tm.syncSidebar()\n\tm.sidebar.ScrollToBottom()\n\treturn cmd\n}\n\nfunc (m *Model) backToNotification() tea.Cmd {\n\tif m.notificationView.GetSubjectPR() == nil && m.notificationView.GetSubjectIssue() == nil {\n\t\treturn nil\n\t}\n\n\tm.notificationView.ClearSubject()\n\tkeys.SetNotificationSubject(keys.NotificationSubjectNone)\n\tm.sidebar.ScrollToTop()\n\treturn m.syncSidebar()\n}\n\nfunc (m *Model) promptConfirmation(currSection section.Section, action string) tea.Cmd {\n\tif currSection != nil {\n\t\tcurrSection.SetPromptConfirmationAction(action)\n\t\treturn currSection.SetIsPromptConfirmationShown(true)\n\t}\n\treturn nil\n}\n\nfunc (m *Model) syncSidebar() tea.Cmd {\n\tif !m.sidebar.IsOpen {\n\t\treturn nil\n\t}\n\n\tcurrRowData := m.getCurrRowData()\n\twidth := m.sidebar.GetSidebarContentWidth()\n\tvar cmd tea.Cmd\n\n\tif currRowData == nil {\n\t\tm.sidebar.SetContent(\"\")\n\t\treturn nil\n\t}\n\n\tswitch row := currRowData.(type) {\n\tcase branch.BranchData:\n\t\tcmd = m.branchSidebar.SetRow(&row)\n\t\tm.sidebar.SetContent(m.branchSidebar.View())\n\tcase *prrow.Data:\n\t\tm.prView.SetSectionId(m.currSectionId)\n\t\tm.prView.SetRow(row)\n\t\tm.prView.SetWidth(width)\n\t\tm.sidebar.SetContent(m.prView.View())\n\tcase *data.IssueData:\n\t\tm.issueSidebar.SetSectionId(m.currSectionId)\n\t\tm.issueSidebar.SetRow(row)\n\t\tm.issueSidebar.SetWidth(width)\n\t\tm.sidebar.SetContent(m.issueSidebar.View())\n\tcase *notificationrow.Data:\n\t\tnotifId := row.GetId()\n\n\t\t// Check if we already have cached data for this notification (user already viewed it)\n\t\tif m.notificationView.GetSubjectId() == notifId {\n\t\t\t// Use cached data\n\t\t\tif m.notificationView.GetSubjectPR() != nil {\n\t\t\t\tm.prView.SetSectionId(0)\n\t\t\t\tm.prView.SetRow(m.notificationView.GetSubjectPR())\n\t\t\t\tm.prView.SetWidth(width)\n\t\t\t\tm.sidebar.SetContent(m.prView.View())\n\t\t\t} else if m.notificationView.GetSubjectIssue() != nil {\n\t\t\t\tm.issueSidebar.SetSectionId(0)\n\t\t\t\tm.issueSidebar.SetRow(m.notificationView.GetSubjectIssue())\n\t\t\t\tm.issueSidebar.SetWidth(width)\n\t\t\t\tm.sidebar.SetContent(m.issueSidebar.View())\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\t// Clear cached subject when navigating to a different notification\n\t\t// so key dispatch doesn't route keys to the wrong subject's handler.\n\t\tm.notificationView.ClearSubject()\n\t\tkeys.SetNotificationSubject(keys.NotificationSubjectNone)\n\t\t// Show prompt to view notification (don't auto-fetch)\n\t\t// User must press Enter to view content and mark as read\n\t\tm.sidebar.SetContent(m.renderNotificationPrompt(row))\n\t}\n\n\treturn cmd\n}\n\nfunc (m *Model) renderNotificationPrompt(row *notificationrow.Data) string {\n\tvar content strings.Builder\n\n\tsubjectType := row.GetSubjectType()\n\tleftMargin := \"      \" // Left margin for content\n\n\t// Styles\n\tnormalText := lipgloss.NewStyle().Foreground(m.ctx.Theme.PrimaryText)\n\tfaintText := lipgloss.NewStyle().Foreground(m.ctx.Theme.FaintText)\n\t// Highlighted key style for main prompt (with background)\n\thighlightKeyStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.PrimaryText).\n\t\tBackground(m.ctx.Theme.FaintBorder).\n\t\tPadding(0, 1)\n\t// Simple key style for table (no background)\n\tkeyStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.PrimaryText)\n\tactionStyle := lipgloss.NewStyle().Foreground(m.ctx.Theme.SuccessText)\n\theaderStyle := lipgloss.NewStyle().\n\t\tForeground(m.ctx.Theme.PrimaryText).\n\t\tBold(true)\n\n\t// Determine subject type display name and primary action\n\ttypeName := \"PR\"\n\tenterAction := \"view\"\n\tif subjectType == \"Issue\" {\n\t\ttypeName = \"Issue\"\n\t} else if subjectType != \"PullRequest\" {\n\t\ttypeName = subjectType\n\t\tenterAction = \"open in browser\"\n\t}\n\n\t// Main prompt: \"Press Enter to view the PR\" or \"Press Enter to open in browser\"\n\tcontent.WriteString(\"\\n\")\n\tcontent.WriteString(leftMargin)\n\tcontent.WriteString(normalText.Render(\"Press \"))\n\tcontent.WriteString(highlightKeyStyle.Render(\"Enter\"))\n\tif enterAction == \"view\" {\n\t\tcontent.WriteString(normalText.Render(fmt.Sprintf(\" to %s the %s\", enterAction, typeName)))\n\t} else {\n\t\tcontent.WriteString(normalText.Render(fmt.Sprintf(\" to %s\", enterAction)))\n\t}\n\tcontent.WriteString(\"\\n\")\n\n\t// Note about marking as read\n\tcontent.WriteString(leftMargin)\n\tcontent.WriteString(faintText.Render(\"(Note: this will mark it as read)\"))\n\tcontent.WriteString(\"\\n\")\n\n\tcontent.WriteString(\"\\n\")\n\n\t// Other Actions header\n\tcontent.WriteString(leftMargin)\n\tcontent.WriteString(headerStyle.Render(\"Other Actions\"))\n\tcontent.WriteString(\"\\n\\n\")\n\n\t// Key-action pairs (simple list without borders)\n\tactions := []struct {\n\t\tkey    string\n\t\taction string\n\t}{\n\t\t{\"D\", \"mark as done\"},\n\t\t{\"m\", \"mark as read\"},\n\t\t{\"u\", \"unsubscribe\"},\n\t\t{\"b\", \"toggle bookmark\"},\n\t\t{\"t\", \"toggle filtering\"},\n\t\t{\"S\", \"sort by repo\"},\n\t\t{\"o\", \"open in browser\"},\n\t}\n\n\tkeyWidth := 7 // Width for key column\n\tfor _, a := range actions {\n\t\tcontent.WriteString(leftMargin)\n\t\t// Right-align the key in its column\n\t\tpadding := strings.Repeat(\" \", keyWidth-len(a.key))\n\t\tcontent.WriteString(padding)\n\t\tcontent.WriteString(keyStyle.Render(a.key))\n\t\tcontent.WriteString(\"  \")\n\t\tcontent.WriteString(actionStyle.Render(a.action))\n\t\tcontent.WriteString(\"\\n\")\n\t}\n\n\t// Add Enter and Esc at the end\n\tcontent.WriteString(leftMargin)\n\tpadding := strings.Repeat(\" \", keyWidth-len(\"Enter\"))\n\tcontent.WriteString(padding)\n\tcontent.WriteString(keyStyle.Render(\"Enter\"))\n\tcontent.WriteString(\"  \")\n\tcontent.WriteString(actionStyle.Render(enterAction))\n\tcontent.WriteString(\"\\n\")\n\tcontent.WriteString(leftMargin)\n\tescPadding := strings.Repeat(\" \", keyWidth-len(\"Esc\"))\n\tcontent.WriteString(escPadding)\n\tcontent.WriteString(keyStyle.Render(\"Esc\"))\n\tcontent.WriteString(\"  \")\n\tcontent.WriteString(actionStyle.Render(\"go back\"))\n\n\treturn content.String()\n}\n\n// loadNotificationContent fetches and displays notification content, marking it as read\nfunc (m *Model) loadNotificationContent() tea.Cmd {\n\tcurrRowData := m.getCurrRowData()\n\trow, ok := currRowData.(*notificationrow.Data)\n\tif !ok || row == nil {\n\t\treturn nil\n\t}\n\n\tnotifId := row.GetId()\n\tsubjectType := row.GetSubjectType()\n\tsubjectUrl := row.GetUrl()\n\tlatestCommentUrl := row.GetLatestCommentUrl()\n\n\t// Show loading indicator\n\twidth := m.sidebar.GetSidebarContentWidth()\n\tm.notificationView.SetRow(row)\n\tm.notificationView.SetWidth(width)\n\tm.sidebar.SetContent(m.notificationView.View())\n\n\tswitch subjectType {\n\tcase \"PullRequest\":\n\t\treturn tea.Batch(\n\t\t\tfunc() tea.Msg {\n\t\t\t\t_ = data.MarkNotificationRead(notifId)\n\t\t\t\treturn notificationssection.UpdateNotificationReadStateMsg{\n\t\t\t\t\tId:     notifId,\n\t\t\t\t\tUnread: false,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() tea.Msg {\n\t\t\t\tpr, err := data.FetchPullRequest(subjectUrl)\n\t\t\t\treturn notificationPRFetchedMsg{\n\t\t\t\t\tNotificationId:   notifId,\n\t\t\t\t\tPR:               pr,\n\t\t\t\t\tLatestCommentUrl: latestCommentUrl,\n\t\t\t\t\tErr:              err,\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\tcase \"Issue\":\n\t\treturn tea.Batch(\n\t\t\tfunc() tea.Msg {\n\t\t\t\t_ = data.MarkNotificationRead(notifId)\n\t\t\t\treturn notificationssection.UpdateNotificationReadStateMsg{\n\t\t\t\t\tId:     notifId,\n\t\t\t\t\tUnread: false,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() tea.Msg {\n\t\t\t\tissue, err := data.FetchIssue(subjectUrl)\n\t\t\t\treturn notificationIssueFetchedMsg{\n\t\t\t\t\tNotificationId:   notifId,\n\t\t\t\t\tIssue:            issue,\n\t\t\t\t\tLatestCommentUrl: latestCommentUrl,\n\t\t\t\t\tErr:              err,\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\tdefault:\n\t\t// For discussions, releases, etc. - mark as read and open in browser\n\t\t// since we can't show rich content for these types\n\t\treturn tea.Batch(\n\t\t\tfunc() tea.Msg {\n\t\t\t\t_ = data.MarkNotificationRead(notifId)\n\t\t\t\treturn notificationssection.UpdateNotificationReadStateMsg{\n\t\t\t\t\tId:     notifId,\n\t\t\t\t\tUnread: false,\n\t\t\t\t}\n\t\t\t},\n\t\t\tm.openBrowser(),\n\t\t)\n\t}\n}\n\nfunc (m *Model) fetchAllViewSections() ([]section.Section, tea.Cmd) {\n\tcmds := make([]tea.Cmd, 0)\n\tcmds = append(cmds, m.tabs.SetAllLoading()...)\n\n\tswitch m.ctx.View {\n\tcase config.RepoView:\n\t\tvar cmd tea.Cmd\n\t\ts, cmd := reposection.FetchAllBranches(m.ctx)\n\t\tcmds = append(cmds, cmd)\n\t\tm.repo = &s\n\t\treturn nil, tea.Batch(cmds...)\n\tcase config.NotificationsView:\n\t\ts, notifCmd := notificationssection.FetchAllSections(m.ctx, m.notifications)\n\t\tcmds = append(cmds, notifCmd)\n\t\tm.notifications = s\n\t\treturn s, tea.Batch(cmds...)\n\tcase config.PRsView:\n\t\ts, prcmds := prssection.FetchAllSections(m.ctx, m.prs)\n\t\tcmds = append(cmds, prcmds)\n\t\treturn s, tea.Batch(cmds...)\n\tdefault:\n\t\ts, issuecmds := issuessection.FetchAllSections(m.ctx)\n\t\tcmds = append(cmds, issuecmds)\n\t\treturn s, tea.Batch(cmds...)\n\t}\n}\n\nfunc (m *Model) getCurrentViewSections() []section.Section {\n\tswitch m.ctx.View {\n\tcase config.RepoView:\n\t\tif m.repo == nil {\n\t\t\treturn []section.Section{}\n\t\t}\n\t\treturn []section.Section{m.repo}\n\tcase config.NotificationsView:\n\t\tif len(m.notifications) == 0 {\n\t\t\treturn []section.Section{}\n\t\t}\n\t\treturn m.notifications\n\tcase config.PRsView:\n\t\treturn m.prs\n\tdefault:\n\t\treturn m.issues\n\t}\n}\n\nfunc (m *Model) getCurrentViewDefaultSection() int {\n\tswitch m.ctx.View {\n\tcase config.RepoView:\n\t\treturn 0\n\tcase config.NotificationsView:\n\t\treturn 1 // First notification section after search section\n\tcase config.PRsView:\n\t\treturn 1\n\tdefault:\n\t\treturn 1\n\t}\n}\n\nfunc (m *Model) setCurrentViewSections(newSections []section.Section) {\n\tif newSections == nil {\n\t\treturn\n\t}\n\n\t// Handle notifications view with search section like PRs/Issues\n\tif m.ctx.View == config.NotificationsView {\n\t\tmissingSearchSection := len(newSections) == 0 ||\n\t\t\t(len(newSections) > 0 && newSections[0].GetId() != 0)\n\t\ts := make([]section.Section, 0)\n\t\tif missingSearchSection {\n\t\t\t// Check if we have an existing search section to preserve\n\t\t\tif len(m.notifications) > 0 && m.notifications[0] != nil &&\n\t\t\t\tm.notifications[0].GetId() == 0 {\n\t\t\t\t// Preserve existing search section with its filter state\n\t\t\t\ts = append(s, m.notifications[0])\n\t\t\t} else {\n\t\t\t\t// Create new search section only if none exists\n\t\t\t\tsearch := notificationssection.NewModel(\n\t\t\t\t\t0,\n\t\t\t\t\tm.ctx,\n\t\t\t\t\tconfig.NotificationsSectionConfig{\n\t\t\t\t\t\tTitle:   \"\",\n\t\t\t\t\t\tFilters: \"archived:false\",\n\t\t\t\t\t},\n\t\t\t\t\ttime.Now(),\n\t\t\t\t)\n\t\t\t\ts = append(s, &search)\n\t\t\t}\n\t\t}\n\t\tm.notifications = append(s, newSections...)\n\t\tm.tabs.SetSections(m.notifications)\n\t\treturn\n\t}\n\n\tmissingSearchSection := len(newSections) == 0 ||\n\t\t(len(newSections) > 0 && newSections[0].GetId() != 0)\n\ts := make([]section.Section, 0)\n\tif m.ctx.View == config.PRsView {\n\t\tif missingSearchSection {\n\t\t\tsearch := prssection.NewModel(\n\t\t\t\t0,\n\t\t\t\tm.ctx,\n\t\t\t\tconfig.PrsSectionConfig{\n\t\t\t\t\tTitle:   \"\",\n\t\t\t\t\tFilters: \"archived:false\",\n\t\t\t\t},\n\t\t\t\ttime.Now(),\n\t\t\t\ttime.Now(),\n\t\t\t)\n\t\t\ts = append(s, &search)\n\t\t}\n\t\tm.prs = append(s, newSections...)\n\t\tnewSections = m.prs\n\t} else {\n\t\tif missingSearchSection {\n\t\t\tsearch := issuessection.NewModel(\n\t\t\t\t0,\n\t\t\t\tm.ctx,\n\t\t\t\tconfig.IssuesSectionConfig{\n\t\t\t\t\tTitle:   \"\",\n\t\t\t\t\tFilters: \"\",\n\t\t\t\t},\n\t\t\t\ttime.Now(),\n\t\t\t\ttime.Now(),\n\t\t\t)\n\t\t\ts = append(s, &search)\n\t\t}\n\t\tm.issues = append(s, newSections...)\n\t\tnewSections = m.issues\n\t}\n\n\tm.tabs.SetSections(newSections)\n}\n\nfunc (m *Model) switchSelectedView() tea.Cmd {\n\trepoFF := config.IsFeatureEnabled(config.FF_REPO_VIEW)\n\n\t// Reset notification subject when leaving notifications view\n\tif m.ctx.View == config.NotificationsView {\n\t\tkeys.SetNotificationSubject(keys.NotificationSubjectNone)\n\t\tm.notificationView.ClearSubject()\n\t}\n\n\t// View cycle: Notifications → PRs → Issues (→ Repo if enabled) → Notifications\n\tif repoFF {\n\t\tswitch m.ctx.View {\n\t\tcase config.NotificationsView:\n\t\t\tm.ctx.View = config.PRsView\n\t\tcase config.PRsView:\n\t\t\tm.ctx.View = config.IssuesView\n\t\tcase config.IssuesView:\n\t\t\tm.ctx.View = config.RepoView\n\t\tcase config.RepoView:\n\t\t\tm.ctx.View = config.NotificationsView\n\t\t}\n\t} else {\n\t\tswitch m.ctx.View {\n\t\tcase config.NotificationsView:\n\t\t\tm.ctx.View = config.PRsView\n\t\tcase config.PRsView:\n\t\t\tm.ctx.View = config.IssuesView\n\t\tdefault:\n\t\t\tm.ctx.View = config.NotificationsView\n\t\t}\n\t}\n\n\tm.syncMainContentWidth()\n\tm.setCurrSectionId(m.getCurrentViewDefaultSection())\n\n\tvar cmds []tea.Cmd\n\tcurrSections := m.getCurrentViewSections()\n\tif len(currSections) == 0 {\n\t\tnewSections, fetchSectionsCmds := m.fetchAllViewSections()\n\t\tcurrSections = newSections\n\t\tcmds = append(cmds, m.tabs.SetAllLoading()...)\n\t\tcmds = append(cmds, fetchSectionsCmds)\n\t}\n\tm.setCurrentViewSections(currSections)\n\tcmds = append(cmds, m.onViewedRowChanged())\n\n\treturn tea.Batch(cmds...)\n}\n\nfunc (m *Model) isUserDefinedKeybinding(msg tea.KeyMsg) bool {\n\tfor _, keybinding := range m.ctx.Config.Keybindings.Universal {\n\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tif m.ctx.View == config.IssuesView {\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Issues {\n\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.ctx.View == config.PRsView {\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Prs {\n\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.ctx.View == config.RepoView {\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Branches {\n\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\tif m.ctx.View == config.NotificationsView {\n\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Notifications {\n\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tcurrRowData := m.getCurrRowData()\n\t\tif nData, ok := currRowData.(*notificationrow.Data); ok {\n\t\t\tswitch nData.Notification.Subject.Type {\n\t\t\tcase \"PullRequest\":\n\t\t\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Prs {\n\t\t\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase \"Issue\":\n\t\t\t\tfor _, keybinding := range m.ctx.Config.Keybindings.Issues {\n\t\t\t\t\tif keybinding.Builtin == \"\" && keybinding.Key == msg.String() {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (m *Model) renderRunningTask() string {\n\ttasks := make([]context.Task, 0, len(m.tasks))\n\tfor _, value := range m.tasks {\n\t\ttasks = append(tasks, value)\n\t}\n\tsort.Slice(tasks, func(i, j int) bool {\n\t\tif tasks[i].FinishedTime != nil && tasks[j].FinishedTime == nil {\n\t\t\treturn false\n\t\t}\n\t\tif tasks[j].FinishedTime != nil && tasks[i].FinishedTime == nil {\n\t\t\treturn true\n\t\t}\n\t\tif tasks[j].FinishedTime != nil && tasks[i].FinishedTime != nil {\n\t\t\treturn tasks[i].FinishedTime.After(*tasks[j].FinishedTime)\n\t\t}\n\n\t\treturn tasks[i].StartTime.After(tasks[j].StartTime)\n\t})\n\ttask := tasks[0]\n\n\tvar currTaskStatus string\n\tswitch task.State {\n\tcase context.TaskStart:\n\t\tcurrTaskStatus = lipgloss.JoinHorizontal(\n\t\t\tlipgloss.Top,\n\t\t\tm.taskSpinner.View(),\n\t\t\tlipgloss.NewStyle().\n\t\t\t\tBackground(m.ctx.Theme.SelectedBackground).Render(task.StartText),\n\t\t)\n\tcase context.TaskError:\n\t\tcurrTaskStatus = lipgloss.NewStyle().\n\t\t\tForeground(m.ctx.Theme.ErrorText).\n\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\tRender(fmt.Sprintf(\"%s %s\", constants.FailureIcon, task.Error.Error()))\n\tcase context.TaskFinished:\n\t\tcurrTaskStatus = lipgloss.NewStyle().\n\t\t\tForeground(m.ctx.Theme.SuccessText).\n\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\tRender(fmt.Sprintf(\"%s %s\", constants.SuccessIcon, task.FinishedText))\n\t}\n\n\tvar numProcessing int\n\tfor _, task := range m.tasks {\n\t\tif task.State == context.TaskStart {\n\t\t\tnumProcessing += 1\n\t\t}\n\t}\n\n\tstats := \"\"\n\tif numProcessing > 1 {\n\t\tstats = lipgloss.NewStyle().\n\t\t\tForeground(m.ctx.Theme.FaintText).\n\t\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\t\tRender(fmt.Sprintf(\"[ %d] \", numProcessing))\n\t}\n\n\treturn lipgloss.NewStyle().\n\t\tPadding(0, 1).\n\t\tHeight(1).\n\t\tBackground(m.ctx.Theme.SelectedBackground).\n\t\tRender(strings.TrimSpace(lipgloss.JoinHorizontal(lipgloss.Top, stats, currTaskStatus)))\n}\n\ntype userFetchedMsg struct {\n\tuser string\n}\n\nfunc fetchUser() tea.Msg {\n\tuser, err := data.CurrentLoginName()\n\tif err != nil {\n\t\treturn constants.ErrMsg{\n\t\t\tErr: err,\n\t\t}\n\t}\n\n\treturn userFetchedMsg{\n\t\tuser: user,\n\t}\n}\n\ntype intervalRefresh time.Time\n\nfunc (m *Model) doRefreshAtInterval() tea.Cmd {\n\tif m.ctx.Config.Defaults.RefetchIntervalMinutes == 0 {\n\t\treturn nil\n\t}\n\n\treturn tea.Tick(\n\t\ttime.Minute*time.Duration(m.ctx.Config.Defaults.RefetchIntervalMinutes),\n\t\tfunc(t time.Time) tea.Msg {\n\t\t\treturn intervalRefresh(t)\n\t\t},\n\t)\n}\n\ntype updateFooterMsg struct{}\n\nfunc (m *Model) doUpdateFooterAtInterval() tea.Cmd {\n\treturn tea.Tick(\n\t\ttime.Second*10,\n\t\tfunc(t time.Time) tea.Msg {\n\t\t\treturn updateFooterMsg{}\n\t\t},\n\t)\n}\n\n// promptConfirmationForNotificationPR shows a confirmation prompt for PR actions\n// when viewing a PR from a notification. This is separate from section-based\n// confirmation because the notification section doesn't know about PR actions.\nfunc (m *Model) promptConfirmationForNotificationPR(action string) tea.Cmd {\n\tprompt := m.notificationView.SetPendingPRAction(action)\n\tif prompt == \"\" {\n\t\treturn nil\n\t}\n\tm.footer.SetLeftSection(m.ctx.Styles.ListViewPort.PagerStyle.Render(prompt))\n\treturn nil\n}\n\n// promptConfirmationForNotificationIssue shows a confirmation prompt for Issue actions\n// when viewing an Issue from a notification.\nfunc (m *Model) promptConfirmationForNotificationIssue(action string) tea.Cmd {\n\tprompt := m.notificationView.SetPendingIssueAction(action)\n\tif prompt == \"\" {\n\t\treturn nil\n\t}\n\tm.footer.SetLeftSection(m.ctx.Styles.ListViewPort.PagerStyle.Render(prompt))\n\treturn nil\n}\n\n// executeNotificationAction executes a PR/Issue action after user confirmation\nfunc (m *Model) executeNotificationAction(action string) tea.Cmd {\n\tif action == \"\" {\n\t\treturn nil\n\t}\n\n\tsid := tasks.SectionIdentifier{Id: m.currSectionId, Type: notificationssection.SectionType}\n\tpr := m.notificationView.GetSubjectPR()\n\tissue := m.notificationView.GetSubjectIssue()\n\n\tswitch action {\n\tcase \"pr_close\":\n\t\tif pr != nil {\n\t\t\treturn tasks.ClosePR(m.ctx, sid, pr)\n\t\t}\n\tcase \"pr_reopen\":\n\t\tif pr != nil {\n\t\t\treturn tasks.ReopenPR(m.ctx, sid, pr)\n\t\t}\n\tcase \"pr_ready\":\n\t\tif pr != nil {\n\t\t\treturn tasks.PRReady(m.ctx, sid, pr)\n\t\t}\n\tcase \"pr_merge\":\n\t\tif pr != nil {\n\t\t\treturn tasks.MergePR(m.ctx, sid, pr)\n\t\t}\n\tcase \"pr_update\":\n\t\tif pr != nil {\n\t\t\treturn tasks.UpdatePR(m.ctx, sid, pr)\n\t\t}\n\tcase \"pr_approveWorkflows\":\n\t\tif pr != nil {\n\t\t\treturn tasks.ApproveWorkflows(m.ctx, sid, pr)\n\t\t}\n\tcase \"issue_close\":\n\t\tif issue != nil {\n\t\t\treturn tasks.CloseIssue(m.ctx, sid, issue)\n\t\t}\n\tcase \"issue_reopen\":\n\t\tif issue != nil {\n\t\t\treturn tasks.ReopenIssue(m.ctx, sid, issue)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/tui/ui_test.go",
    "content": "package tui\n\nimport (\n\t\"bytes\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"text/template\"\n\t\"time\"\n\n\ttea \"charm.land/bubbletea/v2\"\n\n\t// \"charm.land/x/exp/teatest\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/dlvhdr/gh-dash/v4/internal/config\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/data\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/branchsidebar\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/footer\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/issueview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationssection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/notificationview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prrow\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prssection\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/prview\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/section\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/sidebar\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/components/tabs\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/context\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/keys\"\n\t\"github.com/dlvhdr/gh-dash/v4/internal/tui/theme\"\n)\n\n// func TestFullOutput(t *testing.T) {\n// \tsetupTest(t)\n// \tm := NewModel(config.Location{RepoPath: \"\", ConfigFlag: \"../config/testdata/test-config.yml\"})\n// \ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(160, 60))\n//\n// \ttestutils.WaitForText(t, tm, \"style: make assignment brief\", teatest.WithDuration(6*time.Second))\n//\n// \ttm.Send(tea.KeyPressMsg{\n// \t\tType:  tea.KeyRunes,\n// \t\tRunes: []rune(\"q\"),\n// \t})\n// \ttm.WaitFinished(t, teatest.WithFinalTimeout(time.Second))\n// }\n\n// func TestIssues(t *testing.T) {\n// \tsetupTest(t)\n// \tm := NewModel(config.Location{RepoPath: \"\", ConfigFlag: \"../config/testdata/test-config.yml\"})\n// \ttm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(160, 60))\n//\n// \t// wait for first tab of PRs\n// \ttestutils.WaitForText(t, tm, \"Mine\")\n//\n// \ttm.Send(tea.KeyPressMsg{\n// \t\tType:  tea.KeyRunes,\n// \t\tRunes: []rune(\"s\"),\n// \t})\n// \ttestutils.WaitForText(t, tm, \"[Feature Request] Support notifications\", teatest.WithDuration(6*time.Second))\n// \ttm.Send(tea.KeyPressMsg{\n// \t\tType:  tea.KeyRunes,\n// \t\tRunes: []rune(\"q\"),\n// \t})\n// \ttm.WaitFinished(t, teatest.WithFinalTimeout(5*time.Second))\n// }\n\n// func setupTest(t *testing.T) {\n// \tif _, debug := os.LookupEnv(\"DEBUG\"); debug {\n// \t\tf, _ := os.CreateTemp(\"\", \"gh-dash-debug.log\")\n// \t\tfmt.Printf(\"[DEBU] writing debug logs to %s\\n\", f.Name())\n// \t\tdefer f.Close()\n// \t\tlog.SetOutput(f)\n// \t\tlog.SetLevel(log.DebugLevel)\n// \t}\n// \tsetMockClient(t)\n//\n// \tmarkdown.InitializeMarkdownStyle(true)\n// \tzone.NewGlobal()\n// \tzone.SetEnabled(false)\n// }\n\n// localRoundTripper is an http.RoundTripper that executes HTTP transactions\n// by using handler directly, instead of going over an HTTP connection.\ntype localRoundTripper struct {\n\thandler http.Handler\n}\n\nfunc (l localRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {\n\tw := httptest.NewRecorder()\n\tl.handler.ServeHTTP(w, req)\n\treturn w.Result(), nil\n}\n\n// func mustRead(t *testing.T, r io.Reader) string {\n// \tt.Helper()\n// \tb, err := io.ReadAll(r)\n// \tif err != nil {\n// \t\tpanic(err)\n// \t}\n// \treturn string(b)\n// }\n//\n// func mustWrite(t *testing.T, w io.Writer, s string) {\n// \tt.Helper()\n// \t_, err := io.WriteString(w, s)\n// \tif err != nil {\n// \t\tpanic(err)\n// \t}\n// }\n\n// func setMockClient(t *testing.T) {\n// \tt.Helper()\n// \tmux := http.NewServeMux()\n// \tmux.HandleFunc(\"/api/graphql\", func(w http.ResponseWriter, req *http.Request) {\n// \t\tlog.Debug(\"got request\", \"request\", req.URL, \"body\", req.Body)\n// \t\tbody := mustRead(t, req.Body)\n// \t\tswitch {\n// \t\tcase strings.Contains(body, \"query SearchPullRequests\"):\n// \t\t\td, err := os.ReadFile(\"./testdata/searchPullRequests.json\")\n// \t\t\tif err != nil {\n// \t\t\t\tt.Errorf(\"failed reading mock data file %v\", err)\n// \t\t\t}\n// \t\t\tmustWrite(t, w, string(d))\n// \t\tcase strings.Contains(body, \"query SearchIssues\"):\n// \t\t\td, err := os.ReadFile(\"./testdata/searchIssues.json\")\n// \t\t\tif err != nil {\n// \t\t\t\tt.Errorf(\"failed reading mock data file %v\", err)\n// \t\t\t}\n// \t\t\tmustWrite(t, w, string(d))\n// \t\tdefault:\n// \t\t\tw.WriteHeader(http.StatusInternalServerError)\n// \t\t\treturn\n// \t\t}\n// \t\tw.WriteHeader(http.StatusOK)\n// \t\tw.Header().Set(\"Content-Type\", \"application/json\")\n// \t})\n// \tclient, err := gh.NewGraphQLClient(gh.ClientOptions{\n// \t\tTransport: localRoundTripper{handler: mux},\n// \t\tHost:      \"localhost:3000\",\n// \t\tAuthToken: \"fake-token\",\n// \t})\n// \tif err != nil {\n// \t\tt.Errorf(\"failed creating gh client %v\", err)\n// \t}\n// \tdata.SetClient(client)\n// }\n\nfunc TestGetCurrentViewSections_RepoViewWithNilRepo(t *testing.T) {\n\t// This test verifies that getCurrentViewSections returns an empty slice\n\t// when in RepoView but m.repo is nil (before data is loaded).\n\t// Previously this would return []section.Section{nil} which caused a panic.\n\tm := Model{\n\t\tctx: &context.ProgramContext{\n\t\t\tView: config.RepoView,\n\t\t},\n\t\trepo: nil,\n\t}\n\n\tsections := m.getCurrentViewSections()\n\n\trequire.NotNil(t, sections, \"sections should not be nil\")\n\trequire.Empty(t, sections, \"sections should be empty when repo is nil\")\n}\n\nfunc TestPromptConfirmation_NilSection(t *testing.T) {\n\t// promptConfirmation should return nil when currSection is nil\n\tm := Model{}\n\tcmd := m.promptConfirmation(nil, \"close\")\n\trequire.Nil(t, cmd, \"promptConfirmation should return nil when section is nil\")\n}\n\nfunc TestNotificationView_SwitchViewWithSKey(t *testing.T) {\n\t// Test that pressing 's' in Notifications view switches to PRs view\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:     ctx,\n\t\tkeys:    keys.Keys,\n\t\tprView:  prview.NewModel(ctx),\n\t\tsidebar: sidebarModel,\n\t\ttabs:    tabs.NewModel(ctx),\n\t}\n\tprSec := prssection.NewModel(0, ctx, config.PrsSectionConfig{}, time.Now(), time.Now())\n\tm.prs = []section.Section{&prSec}\n\n\t// Verify we start in NotificationsView\n\trequire.Equal(t, config.NotificationsView, m.ctx.View, \"should start in NotificationsView\")\n\n\t// Test that switchSelectedView returns PRsView when in NotificationsView\n\tm.switchSelectedView()\n\trequire.Equal(t, config.PRsView, m.ctx.View,\n\t\t\"switchSelectedView should set view to PRsView when in NotificationsView\")\n}\n\nfunc TestNotificationView_SwitchViewWithSKey_WhileViewingPR(t *testing.T) {\n\t// Test that pressing 's' when viewing a PR notification switches views\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:     ctx,\n\t\tkeys:    keys.Keys,\n\t\tprView:  prview.NewModel(ctx),\n\t\tsidebar: sidebarModel,\n\t\ttabs:    tabs.NewModel(ctx),\n\t}\n\tprSec := prssection.NewModel(0, ctx, config.PrsSectionConfig{}, time.Now(), time.Now())\n\tm.prs = []section.Section{&prSec}\n\n\t// Set up a PR notification subject (simulating viewing a PR notification)\n\tm.notificationView.SetSubjectPR(&prrow.Data{}, \"test-notification-id\")\n\n\t// Verify we start in NotificationsView\n\trequire.Equal(t, config.NotificationsView, m.ctx.View, \"should start in NotificationsView\")\n\n\t// Verify GetSubjectPR returns non-nil\n\trequire.NotNil(t, m.notificationView.GetSubjectPR(), \"subject PR should be set\")\n\n\t// Test that switchSelectedView returns PRsView\n\tm.switchSelectedView()\n\trequire.Equal(t, config.PRsView, m.ctx.View,\n\t\t\"switchSelectedView should set view to PRsView when in NotificationsView\")\n\n\t// Verify subject was cleared after switch\n\trequire.Nil(t, m.notificationView.GetSubjectPR(),\n\t\t\"subject PR should be cleared after switching views\")\n}\n\nfunc TestNotificationView_SwitchViewWithSKey_WhileViewingIssue(t *testing.T) {\n\t// Test that pressing 's' when viewing an Issue notification switches views\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:     ctx,\n\t\tkeys:    keys.Keys,\n\t\tprView:  prview.NewModel(ctx),\n\t\tsidebar: sidebarModel,\n\t\ttabs:    tabs.NewModel(ctx),\n\t}\n\tprSec := prssection.NewModel(0, ctx, config.PrsSectionConfig{}, time.Now(), time.Now())\n\tm.prs = []section.Section{&prSec}\n\n\t// Set up an Issue notification subject (simulating viewing an Issue notification)\n\tm.notificationView.SetSubjectIssue(&data.IssueData{}, \"test-notification-id\")\n\n\t// Verify we start in NotificationsView\n\trequire.Equal(t, config.NotificationsView, m.ctx.View, \"should start in NotificationsView\")\n\n\t// Verify GetSubjectIssue returns non-nil\n\trequire.NotNil(t, m.notificationView.GetSubjectIssue(), \"subject Issue should be set\")\n\n\t// Test that switchSelectedView returns PRsView\n\tm.switchSelectedView()\n\trequire.Equal(t, config.PRsView, m.ctx.View,\n\t\t\"switchSelectedView should set view to PRsView when in NotificationsView\")\n\n\t// Verify subject was cleared after switch\n\trequire.Nil(t, m.notificationView.GetSubjectIssue(),\n\t\t\"subject Issue should be cleared after switching views\")\n}\n\nfunc TestNotificationView_PRViewTabNavigation(t *testing.T) {\n\t// This test verifies that tab navigation works in notification view when viewing a PR.\n\t// Previously, the code only returned when prCmd != nil, but tab navigation\n\t// (carousel.MoveLeft/MoveRight) doesn't return a command - it just updates state.\n\t// The fix ensures we always sync sidebar and return after prView.Update().\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:     ctx,\n\t\tkeys:    keys.Keys,\n\t\tprView:  prview.NewModel(ctx),\n\t\tsidebar: sidebarModel,\n\t}\n\n\t// Set up a PR notification subject so GetSubjectPR() returns non-nil\n\tm.notificationView.SetSubjectPR(&prrow.Data{}, \"test-notification-id\")\n\n\t// Get initial tab\n\tinitialTab := m.prView.SelectedTab()\n\n\t// Send \"next tab\" key message\n\tmsg := tea.KeyPressMsg{Text: \"]\"}\n\tnewModel, _ := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify tab changed\n\trequire.NotEqual(t, initialTab, m.prView.SelectedTab(),\n\t\t\"prView tab should have changed after pressing next tab key\")\n\n\t// Now test going back\n\tcurrentTab := m.prView.SelectedTab()\n\tmsg = tea.KeyPressMsg{Text: \"[\"}\n\tnewModel, _ = m.Update(msg)\n\tm = newModel.(Model)\n\n\trequire.NotEqual(t, currentTab, m.prView.SelectedTab(),\n\t\t\"prView tab should have changed after pressing prev tab key\")\n}\n\nfunc TestNotificationView_EnterKeyWorksAfterViewingPR(t *testing.T) {\n\t// Test that pressing Enter still works after a PR notification has been viewed.\n\t// Previously, once a PR subject was set, Enter would be absorbed by the PR handler\n\t// instead of triggering loadNotificationContent().\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t\tsidebar:          sidebarModel,\n\t\ttabs:             tabs.NewModel(ctx),\n\t}\n\n\t// Create a notification section with a PR notification\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-notification-1\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test PR\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/pulls/123\",\n\t\t\t\t\tType:  \"PullRequest\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t\tUnread: true,\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\tm.notifications = []section.Section{&notifSec}\n\n\t// Set up a PR notification subject (simulating that Enter was already pressed once)\n\tm.notificationView.SetSubjectPR(&prrow.Data{}, \"test-notification-1\")\n\n\t// Verify GetSubjectPR returns non-nil\n\trequire.NotNil(t, m.notificationView.GetSubjectPR(), \"subject PR should be set\")\n\n\t// Send Enter key\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\t// The fix ensures Enter triggers loadNotificationContent() even when a subject is set.\n\t// loadNotificationContent() returns a batch command for PR notifications.\n\t// Before the fix, Enter would be absorbed by the PR handler and cmd would be nil.\n\trequire.NotNil(t, cmd, \"Enter key should trigger loadNotificationContent and return a command\")\n}\n\nfunc TestNotificationView_EnterKeyWorksAfterViewingIssue(t *testing.T) {\n\t// Test that pressing Enter still works after an Issue notification has been viewed.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t\tsidebar:          sidebarModel,\n\t\ttabs:             tabs.NewModel(ctx),\n\t}\n\n\t// Create a notification section with an Issue notification\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-notification-2\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test Issue\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/issues/456\",\n\t\t\t\t\tType:  \"Issue\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t\tUnread: true,\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\tm.notifications = []section.Section{&notifSec}\n\n\t// Set up an Issue notification subject (simulating that Enter was already pressed once)\n\tm.notificationView.SetSubjectIssue(&data.IssueData{}, \"test-notification-2\")\n\n\t// Verify GetSubjectIssue returns non-nil\n\trequire.NotNil(t, m.notificationView.GetSubjectIssue(), \"subject Issue should be set\")\n\n\t// Send Enter key\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\t_, cmd := m.Update(msg)\n\n\t// The fix ensures Enter triggers loadNotificationContent() even when a subject is set.\n\trequire.NotNil(t, cmd, \"Enter key should trigger loadNotificationContent and return a command\")\n}\n\nfunc TestNotificationView_BackKeyClearsPRSubjectAndRestoresNotificationActions(t *testing.T) {\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\tdefer keys.SetNotificationSubject(keys.NotificationSubjectNone)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t\tsidebar:          sidebarModel,\n\t\ttabs:             tabs.NewModel(ctx),\n\t}\n\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-notification-pr\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test PR\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/pulls/123\",\n\t\t\t\t\tType:  \"PullRequest\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{FullName: \"owner/repo\"},\n\t\t\t\tUnread:     true,\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\tm.notifications = []section.Section{&notifSec}\n\n\tm.notificationView.SetSubjectPR(&prrow.Data{}, \"test-notification-pr\")\n\tkeys.SetNotificationSubject(keys.NotificationSubjectPR)\n\n\tnewModel, _ := m.Update(tea.KeyPressMsg{Code: tea.KeyEsc})\n\tm = newModel.(Model)\n\trequire.Nil(\n\t\tt,\n\t\tm.notificationView.GetSubjectPR(),\n\t\t\"PR subject should be cleared after pressing esc\",\n\t)\n\trequire.Empty(\n\t\tt,\n\t\tm.notificationView.GetSubjectId(),\n\t\t\"subject ID should be cleared after pressing esc\",\n\t)\n\n\tnewModel, _ = m.Update(tea.KeyPressMsg{Text: \"m\"})\n\tm = newModel.(Model)\n\trequire.False(t, m.notificationView.HasPendingAction(),\n\t\t\"notification mark-read key should not be routed to PR merge action after backing out\")\n}\n\nfunc TestNotificationView_BackKeyClearsIssueSubject(t *testing.T) {\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\tdefer keys.SetNotificationSubject(keys.NotificationSubjectNone)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tsidebarModel := sidebar.NewModel()\n\tsidebarModel.UpdateProgramContext(ctx)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t\tsidebar:          sidebarModel,\n\t\ttabs:             tabs.NewModel(ctx),\n\t}\n\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-notification-issue\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test Issue\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/issues/456\",\n\t\t\t\t\tType:  \"Issue\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{FullName: \"owner/repo\"},\n\t\t\t\tUnread:     true,\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\tm.notifications = []section.Section{&notifSec}\n\n\tm.notificationView.SetSubjectIssue(&data.IssueData{}, \"test-notification-issue\")\n\tkeys.SetNotificationSubject(keys.NotificationSubjectIssue)\n\n\tnewModel, _ := m.Update(tea.KeyPressMsg{Code: tea.KeyEsc})\n\tm = newModel.(Model)\n\trequire.Nil(\n\t\tt,\n\t\tm.notificationView.GetSubjectIssue(),\n\t\t\"Issue subject should be cleared after pressing esc\",\n\t)\n\trequire.Empty(\n\t\tt,\n\t\tm.notificationView.GetSubjectId(),\n\t\t\"subject ID should be cleared after pressing esc\",\n\t)\n}\n\n// executeCommandTemplate mimics the template execution logic from runCustomCommand\n// to allow testing template variable substitution without executing shell commands.\nfunc executeCommandTemplate(\n\tt *testing.T,\n\tcommandTemplate string,\n\tinput map[string]any,\n) (string, error) {\n\tt.Helper()\n\tcmd, err := template.New(\"test_command\").Parse(commandTemplate)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tcmd = cmd.Option(\"missingkey=error\")\n\n\tvar buff bytes.Buffer\n\terr = cmd.Execute(&buff, input)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn buff.String(), nil\n}\n\nfunc TestPRCommandTemplateVariables(t *testing.T) {\n\t// Test that PR command templates correctly substitute all available variables,\n\t// matching the behavior of runCustomPRCommand in modelUtils.go\n\tinput := map[string]any{\n\t\t\"RepoName\":    \"owner/repo\",\n\t\t\"PrNumber\":    123,\n\t\t\"HeadRefName\": \"feature-branch\",\n\t\t\"BaseRefName\": \"main\",\n\t\t\"Author\":      \"testuser\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"Author variable\",\n\t\t\ttemplate: \"gh pr view --author {{.Author}}\",\n\t\t\texpected: \"gh pr view --author testuser\",\n\t\t},\n\t\t{\n\t\t\tname:     \"PrNumber variable\",\n\t\t\ttemplate: \"gh pr checkout {{.PrNumber}}\",\n\t\t\texpected: \"gh pr checkout 123\",\n\t\t},\n\t\t{\n\t\t\tname:     \"HeadRefName variable\",\n\t\t\ttemplate: \"git checkout {{.HeadRefName}}\",\n\t\t\texpected: \"git checkout feature-branch\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Multiple variables\",\n\t\t\ttemplate: \"echo PR #{{.PrNumber}} by {{.Author}} in {{.RepoName}}: {{.HeadRefName}} -> {{.BaseRefName}}\",\n\t\t\texpected: \"echo PR #123 by testuser in owner/repo: feature-branch -> main\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestIssueCommandTemplateVariables(t *testing.T) {\n\t// Test that Issue command templates correctly substitute all available variables,\n\t// matching the behavior of runCustomIssueCommand in modelUtils.go\n\tinput := map[string]any{\n\t\t\"RepoName\":    \"owner/repo\",\n\t\t\"IssueNumber\": 456,\n\t\t\"Author\":      \"issueauthor\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"Author variable\",\n\t\t\ttemplate: \"gh issue view --author {{.Author}}\",\n\t\t\texpected: \"gh issue view --author issueauthor\",\n\t\t},\n\t\t{\n\t\t\tname:     \"IssueNumber variable\",\n\t\t\ttemplate: \"gh issue view {{.IssueNumber}}\",\n\t\t\texpected: \"gh issue view 456\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Multiple variables\",\n\t\t\ttemplate: \"echo Issue #{{.IssueNumber}} by {{.Author}} in {{.RepoName}}\",\n\t\t\texpected: \"echo Issue #456 by issueauthor in owner/repo\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestCommandTemplateMissingVariable(t *testing.T) {\n\t// Test that templates with missing variables return an error,\n\t// matching the missingkey=error behavior in runCustomCommand\n\tinput := map[string]any{\n\t\t\"RepoName\": \"owner/repo\",\n\t}\n\n\t_, err := executeCommandTemplate(t, \"gh pr view --author {{.Author}}\", input)\n\trequire.Error(t, err, \"template with missing variable should return an error\")\n}\n\nfunc TestSyncMainContentWidth(t *testing.T) {\n\ttests := []struct {\n\t\tname                 string\n\t\tscreenWidth          int\n\t\tpreviewWidth         float64\n\t\tsidebarOpen          bool\n\t\texpectedPreviewWidth int\n\t\texpectedMainWidth    int\n\t}{\n\t\t{\n\t\t\tname:                 \"absolute width with sidebar open\",\n\t\t\tscreenWidth:          100,\n\t\t\tpreviewWidth:         50,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 50,\n\t\t\texpectedMainWidth:    50,\n\t\t},\n\t\t{\n\t\t\tname:                 \"absolute width with sidebar closed\",\n\t\t\tscreenWidth:          100,\n\t\t\tpreviewWidth:         50,\n\t\t\tsidebarOpen:          false,\n\t\t\texpectedPreviewWidth: 0,\n\t\t\texpectedMainWidth:    100,\n\t\t},\n\t\t{\n\t\t\tname:                 \"relative width 40%\",\n\t\t\tscreenWidth:          100,\n\t\t\tpreviewWidth:         0.4,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 40,\n\t\t\texpectedMainWidth:    60,\n\t\t},\n\t\t{\n\t\t\tname:                 \"relative width 50%\",\n\t\t\tscreenWidth:          200,\n\t\t\tpreviewWidth:         0.5,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 100,\n\t\t\texpectedMainWidth:    100,\n\t\t},\n\t\t{\n\t\t\tname:                 \"very small relative width results in zero\",\n\t\t\tscreenWidth:          100,\n\t\t\tpreviewWidth:         0.005,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 0,\n\t\t\texpectedMainWidth:    100,\n\t\t},\n\t\t{\n\t\t\tname:                 \"absolute width of 1\",\n\t\t\tscreenWidth:          100,\n\t\t\tpreviewWidth:         1,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 1,\n\t\t\texpectedMainWidth:    99,\n\t\t},\n\t\t{\n\t\t\tname:                 \"small screen with relative width\",\n\t\t\tscreenWidth:          10,\n\t\t\tpreviewWidth:         0.1,\n\t\t\tsidebarOpen:          true,\n\t\t\texpectedPreviewWidth: 1,\n\t\t\texpectedMainWidth:    9,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tcfg := config.Config{\n\t\t\t\tDefaults: config.Defaults{\n\t\t\t\t\tPreview: config.PreviewConfig{\n\t\t\t\t\t\tOpen:  true,\n\t\t\t\t\t\tWidth: tc.previewWidth,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tm := Model{\n\t\t\t\tctx: &context.ProgramContext{\n\t\t\t\t\tConfig:      &cfg,\n\t\t\t\t\tScreenWidth: tc.screenWidth,\n\t\t\t\t},\n\t\t\t\tsidebar: sidebar.Model{\n\t\t\t\t\tIsOpen: tc.sidebarOpen,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tm.syncMainContentWidth()\n\n\t\t\tif tc.sidebarOpen {\n\t\t\t\trequire.Equal(t, tc.expectedPreviewWidth, m.ctx.DynamicPreviewWidth,\n\t\t\t\t\t\"DynamicPreviewWidth mismatch\")\n\t\t\t}\n\t\t\trequire.Equal(t, tc.expectedMainWidth, m.ctx.MainContentWidth,\n\t\t\t\t\"MainContentWidth mismatch\")\n\t\t\trequire.Equal(t, tc.sidebarOpen, m.ctx.SidebarOpen,\n\t\t\t\t\"SidebarOpen mismatch\")\n\t\t})\n\t}\n}\n\nfunc TestSyncSidebar_NoOpWhenSidebarClosed(t *testing.T) {\n\t// Regression test for https://github.com/dlvhdr/gh-dash/issues/798\n\t// When preview.open is false, DynamicPreviewWidth is 0, so\n\t// GetSidebarContentWidth() returns 0. If syncSidebar() proceeds to\n\t// render the PR view with that zero width, layout breaks.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\tcfg.Defaults.Preview.Open = false\n\n\tctx := &context.ProgramContext{\n\t\tConfig:      &cfg,\n\t\tScreenWidth: 100,\n\t\tView:        config.PRsView,\n\t\tStartTask:   func(task context.Task) tea.Cmd { return nil },\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tprSection := prssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.PrsSectionConfig{\n\t\t\tTitle:   \"Test\",\n\t\t\tFilters: \"is:open\",\n\t\t},\n\t\ttime.Now(),\n\t\ttime.Now(),\n\t)\n\t// Add a PR so getCurrRowData() returns non-nil, exercising the\n\t// code path that would use the negative width without the guard.\n\tprSection.Prs = []prrow.Data{\n\t\t{Primary: &data.PullRequestData{Title: \"test\", State: \"OPEN\"}},\n\t}\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tprs:              []section.Section{&prSection},\n\t\tsidebar:          sidebar.NewModel(),\n\t\tfooter:           footer.NewModel(ctx),\n\t\ttabs:             tabs.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tbranchSidebar:    branchsidebar.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// sidebar.IsOpen defaults to false from NewModel(), matching preview.open: false\n\trequire.False(t, m.sidebar.IsOpen)\n\tm.sidebar.UpdateProgramContext(ctx)\n\n\t// Confirm the precondition: DynamicPreviewWidth is 0, so\n\t// GetSidebarContentWidth returns 0 (no usable width).\n\trequire.Equal(t, 0, m.ctx.DynamicPreviewWidth)\n\trequire.Equal(t, 0, m.sidebar.GetSidebarContentWidth(),\n\t\t\"GetSidebarContentWidth should be 0 when DynamicPreviewWidth is 0\")\n\n\t// Without the early-return guard, syncSidebar would needlessly render\n\t// the PR view with a zero-width sidebar.\n\trequire.NotPanics(t, func() {\n\t\tcmd := m.syncSidebar()\n\t\trequire.Nil(t, cmd, \"syncSidebar should return nil when sidebar is closed\")\n\t})\n}\n\nfunc TestPromptConfirmationForNotificationPR(t *testing.T) {\n\t// Test that promptConfirmationForNotificationPR sets the pending action\n\t// and displays the confirmation prompt in the footer.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:    ctx,\n\t\tkeys:   keys.Keys,\n\t\tfooter: footer.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 123,\n\t\t},\n\t}, \"test-notification-id\")\n\n\t// Call promptConfirmationForNotificationPR\n\tm.promptConfirmationForNotificationPR(\"close\")\n\n\t// Verify pending action is set\n\trequire.Equal(t, \"pr_close\", m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be set to pr_close\")\n}\n\nfunc TestPromptConfirmationForNotificationPR_NilSubject(t *testing.T) {\n\t// Test that promptConfirmationForNotificationPR returns nil when no PR subject\n\tctx := &context.ProgramContext{}\n\tm := Model{\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\tcmd := m.promptConfirmationForNotificationPR(\"close\")\n\n\trequire.Nil(t, cmd, \"should return nil when no PR subject\")\n\trequire.Empty(\n\t\tt,\n\t\tm.notificationView.GetPendingAction(),\n\t\t\"should not set pending action when no PR subject\",\n\t)\n}\n\nfunc TestPromptConfirmationForNotificationIssue(t *testing.T) {\n\t// Test that promptConfirmationForNotificationIssue sets the pending action\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:    ctx,\n\t\tkeys:   keys.Keys,\n\t\tfooter: footer.NewModel(ctx),\n\t}\n\n\t// Set up an Issue notification subject\n\tm.notificationView.SetSubjectIssue(&data.IssueData{\n\t\tNumber: 456,\n\t}, \"test-notification-id\")\n\n\t// Call promptConfirmationForNotificationIssue\n\tm.promptConfirmationForNotificationIssue(\"close\")\n\n\t// Verify pending action is set\n\trequire.Equal(t, \"issue_close\", m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be set to issue_close\")\n}\n\nfunc TestNotificationConfirmation_CancelOnOtherKey(t *testing.T) {\n\t// Test that pressing any key other than y/Y/Enter cancels the confirmation\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject and pending action\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 123,\n\t\t},\n\t}, \"test-notification-id\")\n\tm.notificationView.SetPendingPRAction(\"close\") // Simulate pending action\n\n\t// Press 'n' to cancel\n\tmsg := tea.KeyPressMsg{Text: \"n\"}\n\tnewModel, cmd := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify pending action is cleared\n\trequire.Empty(t, m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be cleared after cancellation\")\n\trequire.Nil(t, cmd, \"should return nil command when cancelled\")\n}\n\nfunc TestNotificationConfirmation_AcceptWithY(t *testing.T) {\n\t// Test that pressing 'y' confirms and executes the action\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil // No-op for testing\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject and pending action\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 123,\n\t\t},\n\t}, \"test-notification-id\")\n\tm.notificationView.SetPendingPRAction(\"close\")\n\n\t// Press 'y' to confirm\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\tnewModel, cmd := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify pending action is cleared and command is returned\n\trequire.Empty(t, m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be cleared after confirmation\")\n\trequire.NotNil(t, cmd, \"should return a command to execute the action\")\n}\n\nfunc TestNotificationConfirmation_AcceptWithUpperY(t *testing.T) {\n\t// Test that pressing 'Y' (uppercase) also confirms\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil // No-op for testing\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject and pending action\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 123,\n\t\t},\n\t}, \"test-notification-id\")\n\tm.notificationView.SetPendingPRAction(\"merge\")\n\n\t// Press 'Y' to confirm\n\tmsg := tea.KeyPressMsg{Text: \"Y\"}\n\tnewModel, cmd := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify pending action is cleared and command is returned\n\trequire.Empty(t, m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be cleared after confirmation\")\n\trequire.NotNil(t, cmd, \"should return a command to execute the action\")\n}\n\nfunc TestNotificationConfirmation_AcceptWithEnter(t *testing.T) {\n\t// Test that pressing Enter also confirms\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil // No-op for testing\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Set up an Issue notification subject and pending action\n\tm.notificationView.SetSubjectIssue(&data.IssueData{\n\t\tNumber: 456,\n\t\tUrl:    \"https://github.com/test/repo/issues/456\",\n\t\tRepository: data.Repository{\n\t\t\tNameWithOwner: \"test/repo\",\n\t\t},\n\t}, \"test-notification-id\")\n\tm.notificationView.SetPendingIssueAction(\"reopen\")\n\n\t// Press Enter to confirm\n\tmsg := tea.KeyPressMsg{Code: tea.KeyEnter}\n\tnewModel, cmd := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify pending action is cleared and command is returned\n\trequire.Empty(t, m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be cleared after confirmation\")\n\trequire.NotNil(t, cmd, \"should return a command to execute the action\")\n}\n\nfunc TestPromptConfirmationForNotificationIssue_NilSubject(t *testing.T) {\n\t// Test that promptConfirmationForNotificationIssue returns nil when no Issue subject\n\tctx := &context.ProgramContext{}\n\tm := Model{\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\tcmd := m.promptConfirmationForNotificationIssue(\"close\")\n\n\trequire.Nil(t, cmd, \"should return nil when no Issue subject\")\n\trequire.Empty(\n\t\tt,\n\t\tm.notificationView.GetPendingAction(),\n\t\t\"should not set pending action when no Issue subject\",\n\t)\n}\n\nfunc TestRefresh_ClearsEnrichmentCache(t *testing.T) {\n\t// This test verifies that pressing the refresh key ('r') clears the\n\t// enrichment cache, ensuring fresh reviewer data is fetched.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig:    &cfg,\n\t\tView:      config.PRsView,\n\t\tStartTask: func(task context.Task) tea.Cmd { return nil },\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a PR section so getCurrSection() returns non-nil\n\tprSection := prssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.PrsSectionConfig{\n\t\t\tTitle:   \"Test\",\n\t\t\tFilters: \"is:open\",\n\t\t},\n\t\ttime.Now(),\n\t\ttime.Now(),\n\t)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tprs:              []section.Section{&prSection},\n\t\tsidebar:          sidebar.NewModel(),\n\t\tfooter:           footer.NewModel(ctx),\n\t\ttabs:             tabs.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tbranchSidebar:    branchsidebar.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Simulate having a populated cache by ensuring it's NOT cleared\n\t// (In real usage, this would happen after viewing a PR in sidebar)\n\tdata.SetClient(nil) // Reset to known state first\n\t// Note: We can't easily populate the cache without making API calls,\n\t// so we verify the cache clearing behavior works from a cleared state\n\n\t// Verify cache starts cleared\n\trequire.True(t, data.IsEnrichmentCacheCleared(), \"cache should start cleared\")\n\n\t// Send refresh key - this should call data.ClearEnrichmentCache()\n\tmsg := tea.KeyPressMsg{Text: \"r\"}\n\t_, _ = m.Update(msg)\n\n\t// Verify cache is still cleared (ClearEnrichmentCache was called)\n\trequire.True(t, data.IsEnrichmentCacheCleared(),\n\t\t\"cache should be cleared after refresh key press\")\n}\n\nfunc TestRefreshAll_ClearsEnrichmentCache(t *testing.T) {\n\t// This test verifies that pressing the refresh all key ('R') also\n\t// clears the enrichment cache. The cache clearing happens at the start\n\t// of the handler, before fetchAllViewSections.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig:    &cfg,\n\t\tView:      config.PRsView,\n\t\tStartTask: func(task context.Task) tea.Cmd { return nil },\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a PR section for proper setup\n\tprSection := prssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.PrsSectionConfig{\n\t\t\tTitle:   \"Test\",\n\t\t\tFilters: \"is:open\",\n\t\t},\n\t\ttime.Now(),\n\t\ttime.Now(),\n\t)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tprs:              []section.Section{&prSection},\n\t\tsidebar:          sidebar.NewModel(),\n\t\tfooter:           footer.NewModel(ctx),\n\t\ttabs:             tabs.NewModel(ctx),\n\t\tprView:           prview.NewModel(ctx),\n\t\tissueSidebar:     issueview.NewModel(ctx),\n\t\tbranchSidebar:    branchsidebar.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Reset to known state\n\tdata.SetClient(nil)\n\trequire.True(t, data.IsEnrichmentCacheCleared(), \"cache should start cleared\")\n\n\t// Send refresh all key - ClearEnrichmentCache is called at the start\n\t// of the handler, before fetchAllViewSections. We use recover to handle\n\t// any panics from incomplete test setup while still verifying cache behavior.\n\tmsg := tea.KeyPressMsg{Text: \"R\"}\n\tfunc() {\n\t\tdefer func() {\n\t\t\tif r := recover(); r != nil {\n\t\t\t\t// Panic is expected due to incomplete test setup.\n\t\t\t\t// The important thing is that ClearEnrichmentCache was called\n\t\t\t\t// before the panic occurred (it's the first line in the handler).\n\t\t\t\tt.Logf(\"Recovered from expected panic in fetchAllViewSections: %v\", r)\n\t\t\t}\n\t\t}()\n\t\t_, _ = m.Update(msg)\n\t}()\n\n\t// Verify cache is cleared - this is the key assertion\n\trequire.True(t, data.IsEnrichmentCacheCleared(),\n\t\t\"cache should be cleared after refresh all key press\")\n}\n\nfunc TestPromptConfirmationForNotificationPR_ApproveWorkflows(t *testing.T) {\n\t// Test that promptConfirmationForNotificationPR sets the pending action\n\t// for approveWorkflows.\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:    ctx,\n\t\tkeys:   keys.Keys,\n\t\tfooter: footer.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 42,\n\t\t},\n\t}, \"test-notification-id\")\n\n\t// Call promptConfirmationForNotificationPR with approveWorkflows\n\tm.promptConfirmationForNotificationPR(\"approveWorkflows\")\n\n\t// Verify pending action is set\n\trequire.Equal(t, \"pr_approveWorkflows\", m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be set to pr_approveWorkflows\")\n}\n\nfunc TestNotificationConfirmation_ApproveWorkflows_AcceptWithY(t *testing.T) {\n\t// Test that confirming approveWorkflows executes the action\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag: \"../config/testdata/test-config.yml\",\n\t})\n\trequire.NoError(t, err)\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t\tStartTask: func(task context.Task) tea.Cmd {\n\t\t\treturn nil // No-op for testing\n\t\t},\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\tm := Model{\n\t\tctx:              ctx,\n\t\tkeys:             keys.Keys,\n\t\tfooter:           footer.NewModel(ctx),\n\t\tnotificationView: notificationview.NewModel(ctx),\n\t}\n\n\t// Set up a PR notification subject and pending approveWorkflows action\n\tm.notificationView.SetSubjectPR(&prrow.Data{\n\t\tPrimary: &data.PullRequestData{\n\t\t\tNumber: 42,\n\t\t\tRepository: data.Repository{\n\t\t\t\tNameWithOwner: \"owner/repo\",\n\t\t\t},\n\t\t},\n\t}, \"test-notification-id\")\n\tm.notificationView.SetPendingPRAction(\"approveWorkflows\")\n\n\t// Press 'y' to confirm\n\tmsg := tea.KeyPressMsg{Text: \"y\"}\n\tnewModel, cmd := m.Update(msg)\n\tm = newModel.(Model)\n\n\t// Verify pending action is cleared and command is returned\n\trequire.Empty(t, m.notificationView.GetPendingAction(),\n\t\t\"pendingNotificationAction should be cleared after confirmation\")\n\trequire.NotNil(t, cmd, \"should return a command to execute the action\")\n}\n\nfunc TestIsUserDefinedKeybinding_NotificationsView_PRNotification(t *testing.T) {\n\t// Custom PR keybindings should be recognized when viewing a PR notification\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\t// Add a custom PR keybinding\n\tcfg.Keybindings.Prs = []config.Keybinding{\n\t\t{Key: \"B\", Command: \"gh pr view -w {{.PrNumber}}\"},\n\t}\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a notification section with a PR notification as the current row\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-1\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test PR\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/pulls/42\",\n\t\t\t\t\tType:  \"PullRequest\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\n\tm := Model{\n\t\tctx:           ctx,\n\t\tkeys:          keys.Keys,\n\t\tnotifications: []section.Section{&notifSec},\n\t}\n\n\t// The custom PR keybinding \"B\" should be recognized\n\tmsg := tea.KeyPressMsg{Text: \"B\"}\n\trequire.True(t, m.isUserDefinedKeybinding(msg),\n\t\t\"custom PR keybinding should be recognized in NotificationsView for PR notifications\")\n\n\t// A non-configured key should not be recognized\n\tmsg = tea.KeyPressMsg{Text: \"Z\"}\n\trequire.False(t, m.isUserDefinedKeybinding(msg),\n\t\t\"unconfigured key should not be recognized\")\n}\n\nfunc TestIsUserDefinedKeybinding_NotificationsView_IssueNotification(t *testing.T) {\n\t// Custom Issue keybindings should be recognized when viewing an Issue notification\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\t// Add a custom Issue keybinding\n\tcfg.Keybindings.Issues = []config.Keybinding{\n\t\t{Key: \"B\", Command: \"gh issue view -w {{.IssueNumber}}\"},\n\t}\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a notification section with an Issue notification as the current row\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-2\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"Test Issue\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/issues/99\",\n\t\t\t\t\tType:  \"Issue\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\n\tm := Model{\n\t\tctx:           ctx,\n\t\tkeys:          keys.Keys,\n\t\tnotifications: []section.Section{&notifSec},\n\t}\n\n\t// The custom Issue keybinding \"B\" should be recognized\n\tmsg := tea.KeyPressMsg{Text: \"B\"}\n\trequire.True(t, m.isUserDefinedKeybinding(msg),\n\t\t\"custom Issue keybinding should be recognized in NotificationsView for Issue notifications\")\n}\n\nfunc TestIsUserDefinedKeybinding_NotificationsView_NonPRIssueNotification(t *testing.T) {\n\t// Custom PR/Issue keybindings should NOT be recognized for other notification types\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\tcfg.Keybindings.Prs = []config.Keybinding{\n\t\t{Key: \"B\", Command: \"gh pr view -w {{.PrNumber}}\"},\n\t}\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a notification section with a Release notification\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-3\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"v1.0.0\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/releases/12345\",\n\t\t\t\t\tType:  \"Release\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\n\tm := Model{\n\t\tctx:           ctx,\n\t\tkeys:          keys.Keys,\n\t\tnotifications: []section.Section{&notifSec},\n\t}\n\n\t// The custom PR keybinding \"B\" should NOT be recognized for a Release notification\n\tmsg := tea.KeyPressMsg{Text: \"B\"}\n\trequire.False(t, m.isUserDefinedKeybinding(msg),\n\t\t\"custom PR keybinding should not be recognized for Release notifications\")\n}\n\nfunc TestNotificationPRCommandTemplateVariables(t *testing.T) {\n\t// Test that notification PR command templates have RepoName and PrNumber available,\n\t// matching the behavior of runCustomNotificationPRCommand in modelUtils.go\n\tinput := map[string]any{\n\t\t\"RepoName\": \"owner/repo\",\n\t\t\"PrNumber\": 42,\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"PrNumber variable\",\n\t\t\ttemplate: \"gh pr view {{.PrNumber}}\",\n\t\t\texpected: \"gh pr view 42\",\n\t\t},\n\t\t{\n\t\t\tname:     \"RepoName and PrNumber\",\n\t\t\ttemplate: \"gh pr view -R {{.RepoName}} {{.PrNumber}}\",\n\t\t\texpected: \"gh pr view -R owner/repo 42\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestNotificationPRCommandTemplateVariables_WithSidebar(t *testing.T) {\n\t// When the sidebar is open for a PR notification, HeadRefName, BaseRefName,\n\t// and Author become available in the template fields.\n\tinput := map[string]any{\n\t\t\"RepoName\":    \"owner/repo\",\n\t\t\"PrNumber\":    42,\n\t\t\"HeadRefName\": \"feature-branch\",\n\t\t\"BaseRefName\": \"main\",\n\t\t\"Author\":      \"octocat\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"HeadRefName variable\",\n\t\t\ttemplate: \"git checkout {{.HeadRefName}}\",\n\t\t\texpected: \"git checkout feature-branch\",\n\t\t},\n\t\t{\n\t\t\tname:     \"BaseRefName variable\",\n\t\t\ttemplate: \"git diff {{.BaseRefName}}...{{.HeadRefName}}\",\n\t\t\texpected: \"git diff main...feature-branch\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Author variable\",\n\t\t\ttemplate: \"echo {{.Author}}\",\n\t\t\texpected: \"echo octocat\",\n\t\t},\n\t\t{\n\t\t\tname:     \"all fields combined\",\n\t\t\ttemplate: \"gh pr view -R {{.RepoName}} {{.PrNumber}} # by {{.Author}} ({{.HeadRefName}} -> {{.BaseRefName}})\",\n\t\t\texpected: \"gh pr view -R owner/repo 42 # by octocat (feature-branch -> main)\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestNotificationIssueCommandTemplateVariables(t *testing.T) {\n\t// Test that notification Issue command templates have RepoName and IssueNumber available,\n\t// matching the behavior of runCustomNotificationIssueCommand in modelUtils.go\n\tinput := map[string]any{\n\t\t\"RepoName\":    \"owner/repo\",\n\t\t\"IssueNumber\": 99,\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"IssueNumber variable\",\n\t\t\ttemplate: \"gh issue view {{.IssueNumber}}\",\n\t\t\texpected: \"gh issue view 99\",\n\t\t},\n\t\t{\n\t\t\tname:     \"RepoName and IssueNumber\",\n\t\t\ttemplate: \"gh issue view -R {{.RepoName}} {{.IssueNumber}}\",\n\t\t\texpected: \"gh issue view -R owner/repo 99\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestNotificationIssueCommandTemplateVariables_WithSidebar(t *testing.T) {\n\t// When the sidebar is open for an Issue notification, Author becomes available.\n\tinput := map[string]any{\n\t\t\"RepoName\":    \"owner/repo\",\n\t\t\"IssueNumber\": 99,\n\t\t\"Author\":      \"octocat\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"Author variable\",\n\t\t\ttemplate: \"echo {{.Author}}\",\n\t\t\texpected: \"echo octocat\",\n\t\t},\n\t\t{\n\t\t\tname:     \"all fields combined\",\n\t\t\ttemplate: \"gh issue view -R {{.RepoName}} {{.IssueNumber}} # by {{.Author}}\",\n\t\t\texpected: \"gh issue view -R owner/repo 99 # by octocat\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestNotificationCommandTemplate_PRFieldsWithoutSidebar(t *testing.T) {\n\t// When the sidebar is not open, notification PR commands only have RepoName and PrNumber.\n\t// Templates referencing sidebar-only fields should error (missingkey=error behavior).\n\tinput := map[string]any{\n\t\t\"RepoName\": \"owner/repo\",\n\t\t\"PrNumber\": 42,\n\t}\n\n\tunavailableFields := []struct {\n\t\tname     string\n\t\ttemplate string\n\t}{\n\t\t{\"HeadRefName\", \"git checkout {{.HeadRefName}}\"},\n\t\t{\"BaseRefName\", \"git checkout {{.BaseRefName}}\"},\n\t\t{\"Author\", \"echo {{.Author}}\"},\n\t}\n\n\tfor _, tc := range unavailableFields {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.Error(t, err,\n\t\t\t\t\"%s should not be available in notification PR commands\", tc.name)\n\t\t})\n\t}\n}\n\nfunc TestIsUserDefinedKeybinding_NotificationsView_NotificationKeybinding(t *testing.T) {\n\t// Custom notification keybindings should be recognized regardless of subject type\n\tcfg, err := config.ParseConfig(config.Location{\n\t\tConfigFlag:       \"../config/testdata/test-config.yml\",\n\t\tSkipGlobalConfig: true,\n\t})\n\trequire.NoError(t, err)\n\n\t// Add a custom notification keybinding\n\tcfg.Keybindings.Notifications = []config.Keybinding{\n\t\t{Key: \"N\", Command: \"echo {{.RepoName}} {{.Number}}\"},\n\t}\n\n\tctx := &context.ProgramContext{\n\t\tConfig: &cfg,\n\t\tView:   config.NotificationsView,\n\t}\n\tctx.Theme = theme.ParseTheme(ctx.Config)\n\tctx.Styles = context.InitStyles(ctx.Theme)\n\n\t// Create a notification section with a Release notification (not PR or Issue)\n\tnotifSec := notificationssection.NewModel(\n\t\t0,\n\t\tctx,\n\t\tconfig.NotificationsSectionConfig{},\n\t\ttime.Now(),\n\t)\n\tnotifSec.Notifications = []notificationrow.Data{\n\t\t{\n\t\t\tNotification: data.NotificationData{\n\t\t\t\tId: \"test-notif\",\n\t\t\t\tSubject: data.NotificationSubject{\n\t\t\t\t\tTitle: \"v2.0.0\",\n\t\t\t\t\tUrl:   \"https://api.github.com/repos/owner/repo/releases/99\",\n\t\t\t\t\tType:  \"Release\",\n\t\t\t\t},\n\t\t\t\tRepository: data.NotificationRepository{\n\t\t\t\t\tFullName: \"owner/repo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tnotifSec.Table.SetRows(notifSec.BuildRows())\n\n\tm := Model{\n\t\tctx:           ctx,\n\t\tkeys:          keys.Keys,\n\t\tnotifications: []section.Section{&notifSec},\n\t}\n\n\t// The custom notification keybinding \"N\" should be recognized\n\tmsg := tea.KeyPressMsg{Text: \"N\"}\n\trequire.True(t, m.isUserDefinedKeybinding(msg),\n\t\t\"custom notification keybinding should be recognized for any notification type\")\n\n\t// A non-configured key should not be recognized\n\tmsg = tea.KeyPressMsg{Text: \"Z\"}\n\trequire.False(t, m.isUserDefinedKeybinding(msg),\n\t\t\"unconfigured key should not be recognized\")\n}\n\nfunc TestNotificationCommandTemplateVariables(t *testing.T) {\n\t// Test that notification-specific command templates have RepoName and Number available,\n\t// matching the behavior of runCustomNotificationCommand in modelUtils.go\n\tinput := map[string]any{\n\t\t\"RepoName\": \"owner/repo\",\n\t\t\"Number\":   42,\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\ttemplate string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"Number variable\",\n\t\t\ttemplate: \"gh api /notifications/threads/{{.Number}}\",\n\t\t\texpected: \"gh api /notifications/threads/42\",\n\t\t},\n\t\t{\n\t\t\tname:     \"RepoName and Number\",\n\t\t\ttemplate: \"echo {{.RepoName}} #{{.Number}}\",\n\t\t\texpected: \"echo owner/repo #42\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult, err := executeCommandTemplate(t, tc.template, input)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tc.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/utils/templateHandler.go",
    "content": "package utils\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"charm.land/log/v2\"\n\t\"github.com/go-sprout/sprout\"\n)\n\ntype TemplateRegistry struct {\n\thandler sprout.Handler\n}\n\nfunc NewRegistry() *TemplateRegistry {\n\treturn &TemplateRegistry{}\n}\n\nfunc (or *TemplateRegistry) UID() string {\n\treturn \"dlvhdr/gh-dash.registry\"\n}\n\nfunc (or *TemplateRegistry) LinkHandler(fh sprout.Handler) error {\n\tor.handler = fh\n\treturn nil\n}\n\nfunc (or *TemplateRegistry) NowModify(input string) (string, error) {\n\tnow := time.Now()\n\tduration, err := ParseDuration(input)\n\tif err != nil {\n\t\tlog.Error(\"failed parsing duration\", \"input\", input)\n\t\treturn \"\", err\n\t}\n\n\treturn now.Add(duration).Format(\"2006-01-02\"), nil\n}\n\nfunc (or *TemplateRegistry) RegisterFunctions(funcsMap sprout.FunctionMap) error {\n\tsprout.AddFunction(funcsMap, \"nowModify\", or.NowModify)\n\treturn nil\n}\n\nfunc (or *TemplateRegistry) RegisterAliases(aliasMap sprout.FunctionAliasMap) error {\n\treturn nil\n}\n\n// ParseDuration parses a duration string.\n// examples: \"10d\", \"-1.5w\" or \"3Y4M5d\".\n// Add time units are \"d\"=\"D\", \"w\"=\"W\", \"mo=M\", \"y\"=\"Y\".\nfunc ParseDuration(s string) (time.Duration, error) {\n\tneg := false\n\tif len(s) > 0 && s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t}\n\n\tre := regexp.MustCompile(`(\\d*\\.\\d+|\\d+)[^\\d]*`)\n\tunitMap := map[string]time.Duration{\n\t\t\"d\":  24,\n\t\t\"D\":  24,\n\t\t\"w\":  7 * 24,\n\t\t\"W\":  7 * 24,\n\t\t\"mo\": 30 * 24,\n\t\t\"M\":  30 * 24,\n\t\t\"y\":  365 * 24,\n\t\t\"Y\":  365 * 24,\n\t}\n\n\tstrs := re.FindAllString(s, -1)\n\tvar sumDur time.Duration\n\tfor _, str := range strs {\n\t\tvar _hours time.Duration = 1\n\t\tfor unit, hours := range unitMap {\n\t\t\tif strings.Contains(str, unit) {\n\t\t\t\tstr = strings.ReplaceAll(str, unit, \"h\")\n\t\t\t\t_hours = hours\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tdur, err := time.ParseDuration(str)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tsumDur += dur * _hours\n\t}\n\n\tif neg {\n\t\tsumDur = -sumDur\n\t}\n\treturn sumDur, nil\n}\n"
  },
  {
    "path": "internal/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"charm.land/lipgloss/v2\"\n)\n\nconst (\n\tApproxDaysInYear  = 365\n\tApproxDaysInMonth = 28\n\tDaysInWeek        = 7\n)\n\nfunc Max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc Min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc TimeElapsed(then time.Time) string {\n\tvar parts []string\n\tvar text string\n\n\tnow := time.Now()\n\tdiff := now.Sub(then)\n\tday := math.Round(diff.Hours() / 24)\n\tyear := math.Round(day / ApproxDaysInYear)\n\tmonth := math.Round(day / ApproxDaysInMonth)\n\tweek := math.Round(day / DaysInWeek)\n\thour := math.Round(math.Abs(diff.Hours()))\n\tminute := math.Round(math.Abs(diff.Minutes()))\n\tsecond := math.Round(math.Abs(diff.Seconds()))\n\n\tif year > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(year))+\"y\")\n\t}\n\n\tif month > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(month))+\"mo\")\n\t}\n\n\tif week > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(week))+\"w\")\n\t}\n\n\tif day > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(day))+\"d\")\n\t}\n\n\tif hour > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(hour))+\"h\")\n\t}\n\n\tif minute > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(minute))+\"m\")\n\t}\n\n\tif second > 0 {\n\t\tparts = append(parts, strconv.Itoa(int(second))+\"s\")\n\t}\n\n\tif len(parts) == 0 {\n\t\treturn \"now\"\n\t}\n\n\treturn parts[0] + text\n}\n\nfunc BoolPtr(b bool) *bool { return &b }\n\nfunc StringPtr(s string) *string { return &s }\n\nfunc UintPtr(u uint) *uint { return &u }\n\nfunc IntPtr(u int) *int { return &u }\n\nfunc ShortNumber(n int) string {\n\tif n < 1000 {\n\t\treturn strconv.Itoa(n)\n\t}\n\n\tif n < 1000000 {\n\t\treturn strconv.Itoa(n/1000) + \"k\"\n\t}\n\n\treturn strconv.Itoa(n/1000000) + \"m\"\n}\n\n// GetStylePrefix extracts ANSI codes from a lipgloss style without the trailing reset.\n// This allows styled text to be concatenated without breaking parent background colors.\nfunc GetStylePrefix(s lipgloss.Style) string {\n\trendered := s.Render(\"\")\n\t// Strip trailing SGR reset sequence: \\x1b[0m (4 bytes) or \\x1b[m (3 bytes).\n\t// lipgloss v2 uses the shorter form (\\x1b[m); both are valid per ANSI spec.\n\tif len(rendered) >= 4 && rendered[len(rendered)-4:] == \"\\x1b[0m\" {\n\t\treturn rendered[:len(rendered)-4]\n\t}\n\tif len(rendered) >= 3 && rendered[len(rendered)-3:] == \"\\x1b[m\" {\n\t\treturn rendered[:len(rendered)-3]\n\t}\n\treturn rendered\n}\n"
  },
  {
    "path": "internal/utils/utils_test.go",
    "content": "package utils\n\nimport (\n\t\"testing\"\n\n\t\"charm.land/lipgloss/v2\"\n\t\"charm.land/lipgloss/v2/compat\"\n)\n\nfunc TestGetStylePrefix(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tstyle    lipgloss.Style\n\t\twantLen  int\n\t\twantSame bool // whether input == output (no reset to strip)\n\t}{\n\t\t{\n\t\t\tname:    \"empty style returns empty or minimal ANSI\",\n\t\t\tstyle:   lipgloss.NewStyle(),\n\t\t\twantLen: 0,\n\t\t},\n\t\t{\n\t\t\tname:    \"style with foreground color\",\n\t\t\tstyle:   lipgloss.NewStyle().Foreground(lipgloss.Color(\"red\")),\n\t\t\twantLen: 5, // At least some ANSI codes\n\t\t},\n\t\t{\n\t\t\tname:    \"style with background color\",\n\t\t\tstyle:   lipgloss.NewStyle().Background(lipgloss.Color(\"blue\")),\n\t\t\twantLen: 5,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := GetStylePrefix(tt.style)\n\t\t\t// The result should not end with reset sequence\n\t\t\tif (len(result) >= 4 && result[len(result)-4:] == \"\\x1b[0m\") ||\n\t\t\t\t(len(result) >= 3 && result[len(result)-3:] == \"\\x1b[m\") {\n\t\t\t\tt.Error(\"GetStylePrefix should strip trailing reset sequence\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetStylePrefix_StripsReset(t *testing.T) {\n\t// Create a style that will produce a reset sequence\n\tstyle := lipgloss.NewStyle().Foreground(lipgloss.Color(\"205\"))\n\trendered := style.Render(\"\")\n\n\t// Verify the raw render has a reset\n\thasReset := (len(rendered) >= 4 && rendered[len(rendered)-4:] == \"\\x1b[0m\") ||\n\t\t(len(rendered) >= 3 && rendered[len(rendered)-3:] == \"\\x1b[m\")\n\n\tprefix := GetStylePrefix(style)\n\n\t// Prefix should not have reset even if rendered did\n\tprefixHasReset := (len(prefix) >= 4 && prefix[len(prefix)-4:] == \"\\x1b[0m\") ||\n\t\t(len(prefix) >= 3 && prefix[len(prefix)-3:] == \"\\x1b[m\")\n\tif prefixHasReset {\n\t\tt.Errorf(\"GetStylePrefix should strip reset, but got: %q\", prefix)\n\t}\n\n\t// If original had reset, prefix should be shorter\n\tif hasReset && len(prefix) >= len(rendered) {\n\t\tt.Error(\"GetStylePrefix should return shorter string when stripping reset\")\n\t}\n}\n\nfunc TestGetStylePrefix_VariousStyles(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tstyle lipgloss.Style\n\t}{\n\t\t{\n\t\t\tname:  \"bold style\",\n\t\t\tstyle: lipgloss.NewStyle().Bold(true),\n\t\t},\n\t\t{\n\t\t\tname:  \"italic style\",\n\t\t\tstyle: lipgloss.NewStyle().Italic(true),\n\t\t},\n\t\t{\n\t\t\tname:  \"underline style\",\n\t\t\tstyle: lipgloss.NewStyle().Underline(true),\n\t\t},\n\t\t{\n\t\t\tname: \"combined foreground and background\",\n\t\t\tstyle: lipgloss.NewStyle().\n\t\t\t\tForeground(lipgloss.Color(\"red\")).\n\t\t\t\tBackground(lipgloss.Color(\"blue\")),\n\t\t},\n\t\t{\n\t\t\tname: \"adaptive color\",\n\t\t\tstyle: lipgloss.NewStyle().\n\t\t\t\tForeground(compat.AdaptiveColor{Light: lipgloss.Color(\"#000000\"), Dark: lipgloss.Color(\"#ffffff\")}),\n\t\t},\n\t\t{\n\t\t\tname:  \"256 color\",\n\t\t\tstyle: lipgloss.NewStyle().Foreground(lipgloss.Color(\"205\")),\n\t\t},\n\t\t{\n\t\t\tname:  \"true color\",\n\t\t\tstyle: lipgloss.NewStyle().Foreground(lipgloss.Color(\"#ff5733\")),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tprefix := GetStylePrefix(tt.style)\n\n\t\t\t// Should not end with reset\n\t\t\tif (len(prefix) >= 4 && prefix[len(prefix)-4:] == \"\\x1b[0m\") ||\n\t\t\t\t(len(prefix) >= 3 && prefix[len(prefix)-3:] == \"\\x1b[m\") {\n\t\t\t\tt.Errorf(\"GetStylePrefix should strip reset for %s, but got: %q\", tt.name, prefix)\n\t\t\t}\n\n\t\t\t// Should be valid ANSI (starts with escape if non-empty and has styling)\n\t\t\tif len(prefix) > 0 && prefix[0] != '\\x1b' {\n\t\t\t\t// Only fail if the style would produce ANSI codes\n\t\t\t\trendered := tt.style.Render(\"\")\n\t\t\t\tif len(rendered) > 0 && rendered[0] == '\\x1b' {\n\t\t\t\t\tt.Errorf(\n\t\t\t\t\t\t\"GetStylePrefix for %s should start with escape, got: %q\",\n\t\t\t\t\t\ttt.name,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetStylePrefix_ConcatenationPreservesStyle(t *testing.T) {\n\t// Test that concatenating prefix + text works as expected\n\tstyle := lipgloss.NewStyle().Foreground(lipgloss.Color(\"green\"))\n\tprefix := GetStylePrefix(style)\n\n\t// The prefix should be usable for concatenation\n\tresult := prefix + \"Hello\"\n\n\t// Result should contain the text\n\tif len(result) < 5 {\n\t\tt.Error(\"Result should contain 'Hello'\")\n\t}\n\n\t// Result should start with ANSI if style produces ANSI\n\trendered := style.Render(\"\")\n\tif len(rendered) > 0 && rendered[0] == '\\x1b' && prefix[0] != '\\x1b' {\n\t\tt.Error(\"Prefix should start with ANSI escape when style has color\")\n\t}\n}\n"
  },
  {
    "path": "testdata/api.github.com.graphql-schema.json",
    "content": "{\"data\":{\"__schema\":{\"queryType\":{\"name\":\"Query\"},\"mutationType\":{\"name\":\"Mutation\"},\"subscriptionType\":null,\"types\":[{\"kind\":\"INPUT_OBJECT\",\"name\":\"AbortQueuedMigrationsInput\",\"description\":\"Autogenerated input type of AbortQueuedMigrations\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the organization that is running the migrations.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AbortQueuedMigrationsPayload\",\"description\":\"Autogenerated return type of AbortQueuedMigrations.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AbortRepositoryMigrationInput\",\"description\":\"Autogenerated input type of AbortRepositoryMigration\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"migrationId\",\"description\":\"The ID of the migration to be aborted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AbortRepositoryMigrationPayload\",\"description\":\"Autogenerated return type of AbortRepositoryMigration.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptEnterpriseAdministratorInvitationInput\",\"description\":\"Autogenerated input type of AcceptEnterpriseAdministratorInvitation\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"invitationId\",\"description\":\"The id of the invitation being accepted\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AcceptEnterpriseAdministratorInvitationPayload\",\"description\":\"Autogenerated return type of AcceptEnterpriseAdministratorInvitation.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The invitation that was accepted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of accepting an administrator invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptEnterpriseMemberInvitationInput\",\"description\":\"Autogenerated input type of AcceptEnterpriseMemberInvitation\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"invitationId\",\"description\":\"The id of the invitation being accepted\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AcceptEnterpriseMemberInvitationPayload\",\"description\":\"Autogenerated return type of AcceptEnterpriseMemberInvitation.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The invitation that was accepted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of accepting an unaffiliated member invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptTopicSuggestionInput\",\"description\":\"Autogenerated input type of AcceptTopicSuggestion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\\n\\n**Upcoming Change on 2024-04-01 UTC**\\n**Description:** `repositoryId` will be removed.\\n**Reason:** Suggested topics are no longer supported\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the suggested topic.\\n\\n**Upcoming Change on 2024-04-01 UTC**\\n**Description:** `name` will be removed.\\n**Reason:** Suggested topics are no longer supported\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AcceptTopicSuggestionPayload\",\"description\":\"Autogenerated return type of AcceptTopicSuggestion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"The accepted topic.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AccessUserNamespaceRepositoryInput\",\"description\":\"Autogenerated input type of AccessUserNamespaceRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise owning the user namespace repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the user namespace repository to access.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AccessUserNamespaceRepositoryPayload\",\"description\":\"Autogenerated return type of AccessUserNamespaceRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"expiresAt\",\"description\":\"The time that repository access expires at\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that is temporarily accessible.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"description\":\"Represents an object which can take actions on GitHub. Typically a User or Bot.\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the actor's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username of the actor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this actor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this actor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseUserAccount\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ActorConnection\",\"description\":\"The connection type for Actor.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ActorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ActorEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"description\":\"Location information for an actor\",\"fields\":[{\"name\":\"city\",\"description\":\"City\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"country\",\"description\":\"Country name\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"countryCode\",\"description\":\"Country code\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"region\",\"description\":\"Region name\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"regionCode\",\"description\":\"Region or state code\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ActorType\",\"description\":\"The actor's type.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"USER\",\"description\":\"Indicates a user actor.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TEAM\",\"description\":\"Indicates a team actor.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddAssigneesToAssignableInput\",\"description\":\"Autogenerated input type of AddAssigneesToAssignable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assignableId\",\"description\":\"The id of the assignable object to add assignees to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"The ids of actors (users or bots) to add as assignees.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddAssigneesToAssignablePayload\",\"description\":\"Autogenerated return type of AddAssigneesToAssignable.\",\"fields\":[{\"name\":\"assignable\",\"description\":\"The item that was assigned.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddBlockedByInput\",\"description\":\"Autogenerated input type of AddBlockedBy\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the issue to be blocked.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"blockingIssueId\",\"description\":\"The ID of the issue that blocks the given issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddBlockedByPayload\",\"description\":\"Autogenerated return type of AddBlockedBy.\",\"fields\":[{\"name\":\"blockingIssue\",\"description\":\"The issue that is blocking the given issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that is blocked.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddCommentInput\",\"description\":\"Autogenerated input type of AddComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the subject to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddCommentPayload\",\"description\":\"Autogenerated return type of AddComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commentEdge\",\"description\":\"The edge from the subject's comment connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueCommentEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The subject\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"timelineEdge\",\"description\":\"The edge from the subject's timeline connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddDiscussionCommentInput\",\"description\":\"Autogenerated input type of AddDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"discussionId\",\"description\":\"The Node ID of the discussion to comment on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"replyToId\",\"description\":\"The Node ID of the discussion comment within this discussion to reply to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddDiscussionCommentPayload\",\"description\":\"Autogenerated return type of AddDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comment\",\"description\":\"The newly created discussion comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddDiscussionPollVoteInput\",\"description\":\"Autogenerated input type of AddDiscussionPollVote\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pollOptionId\",\"description\":\"The Node ID of the discussion poll option to vote for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddDiscussionPollVotePayload\",\"description\":\"Autogenerated return type of AddDiscussionPollVote.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pollOption\",\"description\":\"The poll option that a vote was added to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOption\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddEnterpriseOrganizationMemberInput\",\"description\":\"Autogenerated input type of AddEnterpriseOrganizationMember\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise which owns the organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization the users will be added to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"userIds\",\"description\":\"The IDs of the enterprise members to add.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The role to assign the users in the organization\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrganizationMemberRole\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddEnterpriseOrganizationMemberPayload\",\"description\":\"Autogenerated return type of AddEnterpriseOrganizationMember.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"users\",\"description\":\"The users who were added to the organization.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddEnterpriseSupportEntitlementInput\",\"description\":\"Autogenerated input type of AddEnterpriseSupportEntitlement\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the Enterprise which the admin belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of a member who will receive the support entitlement.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddEnterpriseSupportEntitlementPayload\",\"description\":\"Autogenerated return type of AddEnterpriseSupportEntitlement.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of adding the support entitlement.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddLabelsToLabelableInput\",\"description\":\"Autogenerated input type of AddLabelsToLabelable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelableId\",\"description\":\"The id of the labelable object to add labels to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"labelIds\",\"description\":\"The ids of the labels to add.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddLabelsToLabelablePayload\",\"description\":\"Autogenerated return type of AddLabelsToLabelable.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labelable\",\"description\":\"The item that was labeled.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectCardInput\",\"description\":\"Autogenerated input type of AddProjectCard\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectColumnId\",\"description\":\"The Node ID of the ProjectColumn.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"contentId\",\"description\":\"The content of the card. Must be a member of the ProjectCardItem union\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"note\",\"description\":\"The note on the card.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddProjectCardPayload\",\"description\":\"Autogenerated return type of AddProjectCard.\",\"fields\":[{\"name\":\"cardEdge\",\"description\":\"The edge from the ProjectColumn's card connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectColumn\",\"description\":\"The ProjectColumn\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectColumnInput\",\"description\":\"Autogenerated input type of AddProjectColumn\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The Node ID of the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the column.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddProjectColumnPayload\",\"description\":\"Autogenerated return type of AddProjectColumn.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"columnEdge\",\"description\":\"The edge from the project's column connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectV2DraftIssueInput\",\"description\":\"Autogenerated input type of AddProjectV2DraftIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to add the draft issue to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the draft issue. A project item can also be created by providing the URL of an Issue or Pull Request if you have access.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the draft issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"The IDs of the assignees of the draft issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddProjectV2DraftIssuePayload\",\"description\":\"Autogenerated return type of AddProjectV2DraftIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectItem\",\"description\":\"The draft issue added to the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectV2ItemByIdInput\",\"description\":\"Autogenerated input type of AddProjectV2ItemById\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to add the item to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"contentId\",\"description\":\"The id of the Issue or Pull Request to add.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddProjectV2ItemByIdPayload\",\"description\":\"Autogenerated return type of AddProjectV2ItemById.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The item added to the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewCommentInput\",\"description\":\"Autogenerated input type of AddPullRequestReviewComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The node ID of the pull request reviewing\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `pullRequestId` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the review to modify.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `pullRequestReviewId` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commitOID\",\"description\":\"The SHA of the commit to comment on.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `commitOID` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The text of the comment. This field is required\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `body` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"path\",\"description\":\"The relative path of the file to comment on.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `path` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"position\",\"description\":\"The line index in the diff to comment on.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `position` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"inReplyTo\",\"description\":\"The comment id to reply to.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `inReplyTo` will be removed. use addPullRequestReviewThread or addPullRequestReviewThreadReply instead\\n**Reason:** We are deprecating the addPullRequestReviewComment mutation\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewCommentPayload\",\"description\":\"Autogenerated return type of AddPullRequestReviewComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comment\",\"description\":\"The newly created comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commentEdge\",\"description\":\"The edge from the review's comment connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewInput\",\"description\":\"Autogenerated input type of AddPullRequestReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"commitOID\",\"description\":\"The commit OID the review pertains to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the review body comment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"event\",\"description\":\"The event to perform on the pull request review.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewEvent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"comments\",\"description\":\"The review line comments.\\n\\n**Upcoming Change on 2023-10-01 UTC**\\n**Description:** `comments` will be removed. use the `threads` argument instead\\n**Reason:** We are deprecating comment fields that use diff-relative positioning\\n\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DraftPullRequestReviewComment\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"threads\",\"description\":\"The review line comment threads.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DraftPullRequestReviewThread\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewPayload\",\"description\":\"Autogenerated return type of AddPullRequestReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The newly created pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewEdge\",\"description\":\"The edge from the pull request's review connection.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewThreadInput\",\"description\":\"Autogenerated input type of AddPullRequestReviewThread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"path\",\"description\":\"Path to the file being commented on.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"Body of the thread's first comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The node ID of the pull request reviewing\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the review to modify.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"line\",\"description\":\"The line of the blob to which the thread refers, required for line-level threads. The end of the line range for multi-line comments.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"side\",\"description\":\"The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"defaultValue\":\"RIGHT\"},{\"name\":\"startLine\",\"description\":\"The first line of the range to which the comment refers.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"startSide\",\"description\":\"The side of the diff on which the start line resides.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"defaultValue\":\"RIGHT\"},{\"name\":\"subjectType\",\"description\":\"The level at which the comments in the corresponding thread are targeted, can be a diff line or a file\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewThreadSubjectType\",\"ofType\":null},\"defaultValue\":\"LINE\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewThreadPayload\",\"description\":\"Autogenerated return type of AddPullRequestReviewThread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"thread\",\"description\":\"The newly created thread.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewThreadReplyInput\",\"description\":\"Autogenerated input type of AddPullRequestReviewThreadReply\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the pending review to which the reply will belong.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewThreadId\",\"description\":\"The Node ID of the thread to which this reply is being written.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The text of the reply.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewThreadReplyPayload\",\"description\":\"Autogenerated return type of AddPullRequestReviewThreadReply.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comment\",\"description\":\"The newly created reply.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddReactionInput\",\"description\":\"Autogenerated input type of AddReaction\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the subject to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"The name of the emoji to react with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddReactionPayload\",\"description\":\"Autogenerated return type of AddReaction.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reaction\",\"description\":\"The reaction object.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"The reaction groups for the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The reactable subject.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddStarInput\",\"description\":\"Autogenerated input type of AddStar\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"starrableId\",\"description\":\"The Starrable ID to star.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddStarPayload\",\"description\":\"Autogenerated return type of AddStar.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"starrable\",\"description\":\"The starrable.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddSubIssueInput\",\"description\":\"Autogenerated input type of AddSubIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The id of the issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"subIssueId\",\"description\":\"The id of the sub-issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subIssueUrl\",\"description\":\"The url of the sub-issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"replaceParent\",\"description\":\"Option to replace parent issue if one already exists\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddSubIssuePayload\",\"description\":\"Autogenerated return type of AddSubIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The parent issue that the sub-issue was added to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssue\",\"description\":\"The sub-issue of the parent.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddUpvoteInput\",\"description\":\"Autogenerated input type of AddUpvote\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the discussion or comment to upvote.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddUpvotePayload\",\"description\":\"Autogenerated return type of AddUpvote.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The votable subject.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Votable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddVerifiableDomainInput\",\"description\":\"Autogenerated input type of AddVerifiableDomain\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner to add the domain to\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"domain\",\"description\":\"The URL of the domain\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddVerifiableDomainPayload\",\"description\":\"Autogenerated return type of AddVerifiableDomain.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domain\",\"description\":\"The verifiable domain that was added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToMergeQueueEvent\",\"description\":\"Represents an 'added_to_merge_queue' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enqueuer\",\"description\":\"The user who added this Pull Request to the merge queue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AddedToMergeQueueEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueue\",\"description\":\"The merge queue where this pull request was added to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectEvent\",\"description\":\"Represents a 'added_to_project' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the AddedToProjectEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectCard\",\"description\":\"Project card referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectColumnName\",\"description\":\"Column name referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectV2Event\",\"description\":\"Represents a 'added_to_project_v2' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AddedToProjectV2Event object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasAutomated\",\"description\":\"Did this event result from workflow automation?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Event\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Agentic\",\"description\":\"Copilot Agentic fields in context of the current viewer.\",\"fields\":[{\"name\":\"viewerCopilotAgentCreatesChannel\",\"description\":\"Channel value for subscribing to live updates for session creations.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCopilotAgentLogUpdatesChannel\",\"description\":\"Channel value for subscribing to live updates for session log updates.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCopilotAgentUpdatesChannel\",\"description\":\"Channel value for subscribing to live updates for session updates.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"AnnouncementBanner\",\"description\":\"An announcement banner for an enterprise or organization.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"The date the announcement was created\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"expiresAt\",\"description\":\"The expiration date of the announcement, if any\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUserDismissible\",\"description\":\"Whether the announcement can be dismissed by the user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"The text of the announcement\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"App\",\"description\":\"A GitHub App.\",\"fields\":[{\"name\":\"clientId\",\"description\":\"The client ID of the app.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the app.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the App object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntries\",\"description\":\"The IP addresses of the app.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for IP allow list entries returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IpAllowListEntryOrder\",\"ofType\":null},\"defaultValue\":\"{field: ALLOW_LIST_VALUE, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"logoBackgroundColor\",\"description\":\"The hex color code, without the leading '#', for the logo background.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"logoUrl\",\"description\":\"A URL pointing to the app's logo.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the app.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"A slug based on the name of the app for use in URLs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The URL to the app's homepage.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ApproveDeploymentsInput\",\"description\":\"Autogenerated input type of ApproveDeployments\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"workflowRunId\",\"description\":\"The node ID of the workflow run containing the pending deployments.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"environmentIds\",\"description\":\"The ids of environments to reject deployments\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"comment\",\"description\":\"Optional comment for approving deployments\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ApproveDeploymentsPayload\",\"description\":\"Autogenerated return type of ApproveDeployments.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployments\",\"description\":\"The affected deployments.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ApproveVerifiableDomainInput\",\"description\":\"Autogenerated input type of ApproveVerifiableDomain\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the verifiable domain to approve.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ApproveVerifiableDomainPayload\",\"description\":\"Autogenerated return type of ApproveVerifiableDomain.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domain\",\"description\":\"The verifiable domain that was approved.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ArchiveProjectV2ItemInput\",\"description\":\"Autogenerated input type of ArchiveProjectV2Item\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to archive the item from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the ProjectV2Item to archive.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ArchiveProjectV2ItemPayload\",\"description\":\"Autogenerated return type of ArchiveProjectV2Item.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The item archived from the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ArchiveRepositoryInput\",\"description\":\"Autogenerated input type of ArchiveRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to mark as archived.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ArchiveRepositoryPayload\",\"description\":\"Autogenerated return type of ArchiveRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that was marked as archived.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"description\":\"An object that can have users assigned to it.\",\"fields\":[{\"name\":\"assignedActors\",\"description\":\"A list of actors assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignees\",\"description\":\"A list of Users assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedActors\",\"description\":\"A list of suggested actors to assign to this object\",\"args\":[{\"name\":\"query\",\"description\":\"If provided, searches users by login or profile name\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"description\":\"Represents an 'assigned' event on any assignable object.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignable\",\"description\":\"Identifies the assignable associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignee\",\"description\":\"Identifies the user or mannequin that was assigned.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Assignee\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AssignedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"Identifies the user who was assigned.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"Assignee\",\"description\":\"Types that can be assigned to issues.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"description\":\"The connection type for Assignee.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"Assignee\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AssigneeEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Assignee\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"description\":\"An entry in the audit log.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgBlockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUnblockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null}]},{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"description\":\"Types that can initiate an audit log event.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"AuditLogOrder\",\"description\":\"Ordering options for Audit Log connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order Audit Logs by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"AuditLogOrderField\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"AuditLogOrderField\",\"description\":\"Properties by which Audit Log connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order audit log entries by timestamp\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeDisabledEvent\",\"description\":\"Represents a 'auto_merge_disabled' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"disabler\",\"description\":\"The user who disabled auto-merge for this Pull Request\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutoMergeDisabledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reason\",\"description\":\"The reason auto-merge was disabled\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reasonCode\",\"description\":\"The reason_code relating to why auto-merge was disabled\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeEnabledEvent\",\"description\":\"Represents a 'auto_merge_enabled' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabler\",\"description\":\"The user who enabled auto-merge for this Pull Request\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutoMergeEnabledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeRequest\",\"description\":\"Represents an auto-merge request for a pull request\",\"fields\":[{\"name\":\"authorEmail\",\"description\":\"The email address of the author of this auto-merge request.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitBody\",\"description\":\"The commit message of the auto-merge request. If a merge queue is required by the base branch, this value will be set by the merge queue when merging.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitHeadline\",\"description\":\"The commit title of the auto-merge request. If a merge queue is required by the base branch, this value will be set by the merge queue when merging\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabledAt\",\"description\":\"When was this auto-merge request was enabled.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabledBy\",\"description\":\"The actor who created the auto-merge request.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeMethod\",\"description\":\"The merge method of the auto-merge request. If a merge queue is required by the base branch, this value will be set by the merge queue when merging.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that this auto-merge request is set against.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoRebaseEnabledEvent\",\"description\":\"Represents a 'auto_rebase_enabled' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabler\",\"description\":\"The user who enabled auto-merge (rebase) for this Pull Request\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutoRebaseEnabledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoSquashEnabledEvent\",\"description\":\"Represents a 'auto_squash_enabled' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabler\",\"description\":\"The user who enabled auto-merge (squash) for this Pull Request\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutoSquashEnabledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeFailedEvent\",\"description\":\"Represents a 'automatic_base_change_failed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutomaticBaseChangeFailedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newBase\",\"description\":\"The new base for this PR\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oldBase\",\"description\":\"The old base for this PR\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeSucceededEvent\",\"description\":\"Represents a 'automatic_base_change_succeeded' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the AutomaticBaseChangeSucceededEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newBase\",\"description\":\"The new base for this PR\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oldBase\",\"description\":\"The old base for this PR\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"description\":\"A (potentially binary) string encoded using base64.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefChangedEvent\",\"description\":\"Represents a 'base_ref_changed' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"currentRefName\",\"description\":\"Identifies the name of the base ref for the pull request after it was changed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BaseRefChangedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousRefName\",\"description\":\"Identifies the name of the base ref for the pull request before it was changed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefDeletedEvent\",\"description\":\"Represents a 'base_ref_deleted' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseRefName\",\"description\":\"Identifies the name of the Ref associated with the `base_ref_deleted` event.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BaseRefDeletedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefForcePushedEvent\",\"description\":\"Represents a 'base_ref_force_pushed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"afterCommit\",\"description\":\"Identifies the after commit SHA for the 'base_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"beforeCommit\",\"description\":\"Identifies the before commit SHA for the 'base_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BaseRefForcePushedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"Identifies the fully qualified ref name for the 'base_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"description\":\"Represents non-fractional signed whole numeric values. Since the value may exceed the size of a 32-bit integer, it's encoded as a string.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Blame\",\"description\":\"Represents a Git blame.\",\"fields\":[{\"name\":\"ranges\",\"description\":\"The list of ranges from a Git blame.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BlameRange\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BlameRange\",\"description\":\"Represents a range of information from a Git blame.\",\"fields\":[{\"name\":\"age\",\"description\":\"Identifies the recency of the change, from 1 (new) to 10 (old). This is calculated as a 2-quantile and determines the length of distance between the median age of all the changes in the file and the recency of the current range's change.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the line author\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"endingLine\",\"description\":\"The ending line for the range\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startingLine\",\"description\":\"The starting line for the range\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Blob\",\"description\":\"Represents a Git blob.\",\"fields\":[{\"name\":\"abbreviatedOid\",\"description\":\"An abbreviated version of the Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"byteSize\",\"description\":\"Byte size of Blob object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitResourcePath\",\"description\":\"The HTTP path for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitUrl\",\"description\":\"The HTTP URL for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Blob object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isBinary\",\"description\":\"Indicates whether the Blob is binary or text. Returns null if unable to determine the encoding.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isTruncated\",\"description\":\"Indicates whether the contents is truncated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"The Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the Git object belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"text\",\"description\":\"UTF8 text data or null if the Blob is binary\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByAddedEvent\",\"description\":\"Represents a 'blocked_by_added' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockingIssue\",\"description\":\"The blocking issue that was added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BlockedByAddedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByRemovedEvent\",\"description\":\"Represents a 'blocked_by_removed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockingIssue\",\"description\":\"The blocking issue that was removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BlockedByRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingAddedEvent\",\"description\":\"Represents a 'blocking_added' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockedIssue\",\"description\":\"The blocked issue that was added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BlockingAddedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingRemovedEvent\",\"description\":\"Represents a 'blocking_removed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockedIssue\",\"description\":\"The blocked issue that was removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BlockingRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"description\":\"Represents `true` or `false` values.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"description\":\"A special type of user which takes actions on behalf of GitHub Apps.\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the GitHub App's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Bot object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username of the actor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this bot\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this bot\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"BranchActorAllowanceActor\",\"description\":\"Types which can be actors for `BranchActorAllowance` objects.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"BranchNamePatternParameters\",\"description\":\"Parameters to be used for the branch_name_pattern rule\",\"fields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"BranchNamePatternParametersInput\",\"description\":\"Parameters to be used for the branch_name_pattern rule\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"description\":\"A branch protection rule.\",\"fields\":[{\"name\":\"allowsDeletions\",\"description\":\"Can this branch be deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"allowsForcePushes\",\"description\":\"Are force pushes allowed on this branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blocksCreations\",\"description\":\"Is branch creation a protected operation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRuleConflicts\",\"description\":\"A list of conflicts matching branches protection rule and other branch protection rules\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflictConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bypassForcePushAllowances\",\"description\":\"A list of actors able to force push for this branch protection rule.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowanceConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bypassPullRequestAllowances\",\"description\":\"A list of actors able to bypass PRs for this branch protection rule.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowanceConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created this branch protection rule.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissesStaleReviews\",\"description\":\"Will new commits pushed to matching branches dismiss pull request review approvals.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BranchProtectionRule object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isAdminEnforced\",\"description\":\"Can admins override branch protection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockAllowsFetchAndMerge\",\"description\":\"Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockBranch\",\"description\":\"Whether to set the branch as read-only. If this is true, users will not be able to push to the branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"matchingRefs\",\"description\":\"Repository refs that are protected by this rule\",\"args\":[{\"name\":\"query\",\"description\":\"Filters refs with query on name\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RefConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"Identifies the protection rule pattern.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pushAllowances\",\"description\":\"A list push allowances for this branch protection rule.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PushAllowanceConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this branch protection rule.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requireLastPushApproval\",\"description\":\"Whether the most recent push must be approved by someone other than the person who pushed it\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"Number of approving reviews required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredDeploymentEnvironments\",\"description\":\"List of required deployment environments that must be deployed successfully to update matching branches\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredStatusCheckContexts\",\"description\":\"List of required status check contexts that must pass for commits to be accepted to matching branches.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"List of required status checks that must pass for commits to be accepted to matching branches.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RequiredStatusCheckDescription\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresApprovingReviews\",\"description\":\"Are approving reviews required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresCodeOwnerReviews\",\"description\":\"Are reviews from code owners required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresCommitSignatures\",\"description\":\"Are commits required to be signed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresConversationResolution\",\"description\":\"Are conversations required to be resolved before merging.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresDeployments\",\"description\":\"Does this branch require deployment to specific environments before merging\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresLinearHistory\",\"description\":\"Are merge commits prohibited from being pushed to this branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresStatusChecks\",\"description\":\"Are status checks required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresStrictStatusChecks\",\"description\":\"Are branches required to be up to date before merging.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"restrictsPushes\",\"description\":\"Is pushing to matching branches restricted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"restrictsReviewDismissals\",\"description\":\"Is dismissal of pull request reviews restricted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewDismissalAllowances\",\"description\":\"A list review dismissal allowances for this branch protection rule.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowanceConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflict\",\"description\":\"A conflict between two branch protection rules.\",\"fields\":[{\"name\":\"branchProtectionRule\",\"description\":\"Identifies the branch protection rule.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conflictingBranchProtectionRule\",\"description\":\"Identifies the conflicting branch protection rule.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"Identifies the branch ref that has conflicting rules\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflictConnection\",\"description\":\"The connection type for BranchProtectionRuleConflict.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflictEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflict\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflictEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConflict\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConnection\",\"description\":\"The connection type for BranchProtectionRule.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"BulkSponsorship\",\"description\":\"Information about a sponsorship to make for a user or organization with a GitHub Sponsors profile, as part of sponsoring many users or organizations at once.\",\"fields\":null,\"inputFields\":[{\"name\":\"sponsorableId\",\"description\":\"The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"amount\",\"description\":\"The amount to pay to the sponsorable in US dollars. Valid values: 1-12000.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"BypassActor\",\"description\":\"Types that can represent a repository ruleset bypass actor.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowance\",\"description\":\"A user, team, or app who has the ability to bypass a force push requirement on a protected branch.\",\"fields\":[{\"name\":\"actor\",\"description\":\"The actor that can force push.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"BranchActorAllowanceActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRule\",\"description\":\"Identifies the branch protection rule associated with the allowed user, team, or app.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BypassForcePushAllowance object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowanceConnection\",\"description\":\"The connection type for BypassForcePushAllowance.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowanceEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowance\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowanceEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowance\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowance\",\"description\":\"A user, team, or app who has the ability to bypass a pull request requirement on a protected branch.\",\"fields\":[{\"name\":\"actor\",\"description\":\"The actor that can bypass.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"BranchActorAllowanceActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRule\",\"description\":\"Identifies the branch protection rule associated with the allowed user, team, or app.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the BypassPullRequestAllowance object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowanceConnection\",\"description\":\"The connection type for BypassPullRequestAllowance.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowanceEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowance\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowanceEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowance\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CVSS\",\"description\":\"The Common Vulnerability Scoring System\",\"fields\":[{\"name\":\"score\",\"description\":\"The CVSS score associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vectorString\",\"description\":\"The CVSS vector string associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CWE\",\"description\":\"A common weakness enumeration\",\"fields\":[{\"name\":\"cweId\",\"description\":\"The id of the CWE\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"A detailed description of this CWE\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CWE object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of this CWE\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CWEConnection\",\"description\":\"The connection type for CWE.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CWEEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CWE\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CWEEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CWE\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelEnterpriseAdminInvitationInput\",\"description\":\"Autogenerated input type of CancelEnterpriseAdminInvitation\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"invitationId\",\"description\":\"The Node ID of the pending enterprise administrator invitation.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CancelEnterpriseAdminInvitationPayload\",\"description\":\"Autogenerated return type of CancelEnterpriseAdminInvitation.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The invitation that was canceled.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of canceling an administrator invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelEnterpriseMemberInvitationInput\",\"description\":\"Autogenerated input type of CancelEnterpriseMemberInvitation\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"invitationId\",\"description\":\"The Node ID of the pending enterprise member invitation.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CancelEnterpriseMemberInvitationPayload\",\"description\":\"Autogenerated return type of CancelEnterpriseMemberInvitation.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The invitation that was canceled.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of canceling an member invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelSponsorshipInput\",\"description\":\"Autogenerated input type of CancelSponsorship\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorId\",\"description\":\"The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorLogin\",\"description\":\"The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableId\",\"description\":\"The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CancelSponsorshipPayload\",\"description\":\"Autogenerated return type of CancelSponsorship.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsTier\",\"description\":\"The tier that was being used at the time of cancellation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ChangeUserStatusInput\",\"description\":\"Autogenerated input type of ChangeUserStatus\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"emoji\",\"description\":\"The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"message\",\"description\":\"A short description of your current status.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization whose members will be allowed to see the status. If omitted, the status will be publicly visible.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"limitedAvailability\",\"description\":\"Whether this status should indicate you are not fully available on GitHub, e.g., you are away.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"expiresAt\",\"description\":\"If set, the user status will not be shown after this date.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ChangeUserStatusPayload\",\"description\":\"Autogenerated return type of ChangeUserStatus.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"Your updated status.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotation\",\"description\":\"A single check annotation.\",\"fields\":[{\"name\":\"annotationLevel\",\"description\":\"The annotation's severity level.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckAnnotationLevel\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blobUrl\",\"description\":\"The path to the file that this annotation was made on.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"location\",\"description\":\"The position of this annotation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationSpan\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"The annotation's message.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path that this annotation was made on.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rawDetails\",\"description\":\"Additional information about the annotation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The annotation's title\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationConnection\",\"description\":\"The connection type for CheckAnnotation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckAnnotationData\",\"description\":\"Information from a check run analysis to specific lines of code.\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"The path of the file to add an annotation to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"location\",\"description\":\"The location of the annotation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckAnnotationRange\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"annotationLevel\",\"description\":\"Represents an annotation's information level\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckAnnotationLevel\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"message\",\"description\":\"A short description of the feedback for these lines of code.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title that represents the annotation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"rawDetails\",\"description\":\"Details about this annotation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CheckAnnotationLevel\",\"description\":\"Represents an annotation's information level.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"FAILURE\",\"description\":\"An annotation indicating an inescapable error.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOTICE\",\"description\":\"An annotation indicating some information.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WARNING\",\"description\":\"An annotation indicating an ignorable error.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationPosition\",\"description\":\"A character position in a check annotation.\",\"fields\":[{\"name\":\"column\",\"description\":\"Column number (1 indexed).\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"line\",\"description\":\"Line number (1 indexed).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckAnnotationRange\",\"description\":\"Information from a check run analysis to specific lines of code.\",\"fields\":null,\"inputFields\":[{\"name\":\"startLine\",\"description\":\"The starting line of the range.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"startColumn\",\"description\":\"The starting column of the range.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"endLine\",\"description\":\"The ending line of the range.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"endColumn\",\"description\":\"The ending column of the range.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationSpan\",\"description\":\"An inclusive pair of positions for a check annotation.\",\"fields\":[{\"name\":\"end\",\"description\":\"End position (inclusive).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationPosition\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"start\",\"description\":\"Start position (inclusive).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationPosition\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"description\":\"The possible states for a check suite or run conclusion.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ACTION_REQUIRED\",\"description\":\"The check suite or run requires action.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TIMED_OUT\",\"description\":\"The check suite or run has timed out.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CANCELLED\",\"description\":\"The check suite or run has been cancelled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"The check suite or run has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"The check suite or run has succeeded.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NEUTRAL\",\"description\":\"The check suite or run was neutral.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SKIPPED\",\"description\":\"The check suite or run was skipped.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STARTUP_FAILURE\",\"description\":\"The check suite or run has failed at startup.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STALE\",\"description\":\"The check suite or run was marked stale by GitHub. Only GitHub can use this conclusion.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"description\":\"A check run.\",\"fields\":[{\"name\":\"annotations\",\"description\":\"The check run's annotations\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckAnnotationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checkSuite\",\"description\":\"The check suite that this run is a part of.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"completedAt\",\"description\":\"Identifies the date and time when the check run was completed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conclusion\",\"description\":\"The conclusion of the check run.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployment\",\"description\":\"The corresponding deployment for this job, if any\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"detailsUrl\",\"description\":\"The URL from which to find full details of the check run on the integrator's site.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"externalId\",\"description\":\"A reference for the check run on the integrator's system.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CheckRun object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRequired\",\"description\":\"Whether this is required to pass before merging for a specific pull request.\",\"args\":[{\"name\":\"pullRequestId\",\"description\":\"The id of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestNumber\",\"description\":\"The number of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the check for this check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingDeploymentRequest\",\"description\":\"Information about a pending deployment, if any, in this check run\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permalink\",\"description\":\"The permalink to the check run summary.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startedAt\",\"description\":\"Identifies the date and time when the check run was started.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The current status of the check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"steps\",\"description\":\"The check run's steps\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"number\",\"description\":\"Step number\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckStepConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summary\",\"description\":\"A string representing the check run's summary\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"text\",\"description\":\"A string representing the check run's text\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"A string representing the check run\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RequirableByPullRequest\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunAction\",\"description\":\"Possible further actions the integrator can perform.\",\"fields\":null,\"inputFields\":[{\"name\":\"label\",\"description\":\"The text to be displayed on a button in the web UI.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A short explanation of what this action would do.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"identifier\",\"description\":\"A reference for the action on the integrator's system. \",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRunConnection\",\"description\":\"The connection type for CheckRun.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckRunEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRunEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunFilter\",\"description\":\"The filters that are available when fetching check runs.\",\"fields\":null,\"inputFields\":[{\"name\":\"checkType\",\"description\":\"Filters the check runs by this type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckRunType\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"appId\",\"description\":\"Filters the check runs created by this application ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"checkName\",\"description\":\"Filters the check runs by this name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"status\",\"description\":\"Filters the check runs by this status. Superceded by statuses.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"statuses\",\"description\":\"Filters the check runs by this status. Overrides status.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"conclusions\",\"description\":\"Filters the check runs by these conclusions.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunOutput\",\"description\":\"Descriptive details about the check run.\",\"fields\":null,\"inputFields\":[{\"name\":\"title\",\"description\":\"A title to provide for this check run.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"summary\",\"description\":\"The summary of the check run (supports Commonmark).\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"text\",\"description\":\"The details of the check run (supports Commonmark).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"annotations\",\"description\":\"The annotations that are made as part of the check run.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckAnnotationData\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"images\",\"description\":\"Images attached to the check run output displayed in the GitHub pull request UI.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunOutputImage\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunOutputImage\",\"description\":\"Images attached to the check run output displayed in the GitHub pull request UI.\",\"fields\":null,\"inputFields\":[{\"name\":\"alt\",\"description\":\"The alternative text for the image.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"imageUrl\",\"description\":\"The full URL of the image.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"caption\",\"description\":\"A short image description.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CheckRunState\",\"description\":\"The possible states of a check run in a status rollup.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ACTION_REQUIRED\",\"description\":\"The check run requires action.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CANCELLED\",\"description\":\"The check run has been cancelled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPLETED\",\"description\":\"The check run has been completed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"The check run has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The check run is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NEUTRAL\",\"description\":\"The check run was neutral.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING\",\"description\":\"The check run is in pending state.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The check run has been queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SKIPPED\",\"description\":\"The check run was skipped.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STALE\",\"description\":\"The check run was marked stale by GitHub. Only GitHub can use this conclusion.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STARTUP_FAILURE\",\"description\":\"The check run has failed at startup.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"The check run has succeeded.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TIMED_OUT\",\"description\":\"The check run has timed out.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAITING\",\"description\":\"The check run is in waiting state.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRunStateCount\",\"description\":\"Represents a count of the state of a check run.\",\"fields\":[{\"name\":\"count\",\"description\":\"The number of check runs with this state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of a check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckRunState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CheckRunType\",\"description\":\"The possible types of check runs.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALL\",\"description\":\"Every check run available.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LATEST\",\"description\":\"The latest check run.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"description\":\"The possible states for a check suite or run status.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REQUESTED\",\"description\":\"The check suite or run has been requested.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The check suite or run has been queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The check suite or run is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPLETED\",\"description\":\"The check suite or run has been completed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAITING\",\"description\":\"The check suite or run is in waiting state.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING\",\"description\":\"The check suite or run is in pending state.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckStep\",\"description\":\"A single check step.\",\"fields\":[{\"name\":\"completedAt\",\"description\":\"Identifies the date and time when the check step was completed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conclusion\",\"description\":\"The conclusion of the check step.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"externalId\",\"description\":\"A reference for the check step on the integrator's system.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The step's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"The index of the step in the list of steps of the parent check run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"secondsToCompletion\",\"description\":\"Number of seconds to completion.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startedAt\",\"description\":\"Identifies the date and time when the check step was started.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The current status of the check step.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckStepConnection\",\"description\":\"The connection type for CheckStep.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckStepEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckStep\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckStepEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckStep\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"description\":\"A check suite.\",\"fields\":[{\"name\":\"app\",\"description\":\"The GitHub App which created this check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branch\",\"description\":\"The name of the branch for this check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checkRuns\",\"description\":\"The check runs associated with a check suite.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filters the check runs by this type.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunFilter\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckRunConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"The commit for this check suite\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conclusion\",\"description\":\"The conclusion of this check suite.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The user who triggered the check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CheckSuite object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"matchingPullRequests\",\"description\":\"A list of open pull requests matching the check suite.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"push\",\"description\":\"The push that triggered this check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Push\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this check suite.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this check suite\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The status of this check suite.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CheckStatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this check suite\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"workflowRun\",\"description\":\"The workflow run associated with this check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckSuiteAutoTriggerPreference\",\"description\":\"The auto-trigger preferences that are available for check suites.\",\"fields\":null,\"inputFields\":[{\"name\":\"appId\",\"description\":\"The node ID of the application that owns the check suite.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"setting\",\"description\":\"Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckSuiteConnection\",\"description\":\"The connection type for CheckSuite.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuiteEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckSuiteEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckSuiteFilter\",\"description\":\"The filters that are available when fetching check suites.\",\"fields\":null,\"inputFields\":[{\"name\":\"appId\",\"description\":\"Filters the check suites created by this application ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"checkName\",\"description\":\"Filters the check suites by this name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"Claimable\",\"description\":\"An object which can have its data claimed or claim data from another.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClearLabelsFromLabelableInput\",\"description\":\"Autogenerated input type of ClearLabelsFromLabelable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelableId\",\"description\":\"The id of the labelable object to clear the labels from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ClearLabelsFromLabelablePayload\",\"description\":\"Autogenerated return type of ClearLabelsFromLabelable.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labelable\",\"description\":\"The item that was unlabeled.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClearProjectV2ItemFieldValueInput\",\"description\":\"Autogenerated input type of ClearProjectV2ItemFieldValue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the item to be cleared.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"fieldId\",\"description\":\"The ID of the field to be cleared.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ClearProjectV2ItemFieldValuePayload\",\"description\":\"Autogenerated return type of ClearProjectV2ItemFieldValue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Item\",\"description\":\"The updated item.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloneProjectInput\",\"description\":\"Autogenerated input type of CloneProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"targetOwnerId\",\"description\":\"The owner ID to create the project under.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sourceId\",\"description\":\"The source project to clone.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"includeWorkflows\",\"description\":\"Whether or not to clone the source project's workflows.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The description of the project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"public\",\"description\":\"The visibility of the project, defaults to false (private).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CloneProjectPayload\",\"description\":\"Autogenerated return type of CloneProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"jobStatusId\",\"description\":\"The id of the JobStatus for populating cloned fields.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The new cloned project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloneTemplateRepositoryInput\",\"description\":\"Autogenerated input type of CloneTemplateRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the template repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the new repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner for the new repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A short description of the new repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"Indicates the repository's visibility level.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"includeAllBranches\",\"description\":\"Whether to copy all branches from the template to the new repository. Defaults to copying only the default branch of the template.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CloneTemplateRepositoryPayload\",\"description\":\"Autogenerated return type of CloneTemplateRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The new repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"description\":\"An object that can be closed\",\"fields\":[{\"name\":\"closed\",\"description\":\"Indicates if the object is closed (definition of closed may depend on type)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloseDiscussionInput\",\"description\":\"Autogenerated input type of CloseDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"discussionId\",\"description\":\"ID of the discussion to be closed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"reason\",\"description\":\"The reason why the discussion is being closed.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DiscussionCloseReason\",\"ofType\":null},\"defaultValue\":\"RESOLVED\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CloseDiscussionPayload\",\"description\":\"Autogenerated return type of CloseDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that was closed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloseIssueInput\",\"description\":\"Autogenerated input type of CloseIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"ID of the issue to be closed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"stateReason\",\"description\":\"The reason the issue is to be closed.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueClosedStateReason\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"duplicateIssueId\",\"description\":\"ID of the issue that this is a duplicate of.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CloseIssuePayload\",\"description\":\"Autogenerated return type of CloseIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was closed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClosePullRequestInput\",\"description\":\"Autogenerated input type of ClosePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to be closed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosePullRequestPayload\",\"description\":\"Autogenerated return type of ClosePullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that was closed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"description\":\"Represents a 'closed' event on any `Closable`.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closable\",\"description\":\"Object that was closed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closer\",\"description\":\"Object which triggered the creation of this event.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Closer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duplicateOf\",\"description\":\"The issue or pull request that this issue was marked as a duplicate of.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ClosedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this closed event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stateReason\",\"description\":\"The reason the issue state was changed to closed.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueStateReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this closed event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"Closer\",\"description\":\"The object which triggered a `ClosedEvent`.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"CodeOfConduct\",\"description\":\"The Code of Conduct for a repository\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the Code of Conduct\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CodeOfConduct object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"key\",\"description\":\"The key for the Code of Conduct\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The formal name of the Code of Conduct\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this Code of Conduct\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this Code of Conduct\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CodeScanningParameters\",\"description\":\"Choose which tools must provide code scanning results before the reference is updated. When configured, code scanning must be enabled and have results for both the commit and the reference being updated.\",\"fields\":[{\"name\":\"codeScanningTools\",\"description\":\"Tools that must provide code scanning results for this rule to pass.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CodeScanningTool\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CodeScanningParametersInput\",\"description\":\"Choose which tools must provide code scanning results before the reference is updated. When configured, code scanning must be enabled and have results for both the commit and the reference being updated.\",\"fields\":null,\"inputFields\":[{\"name\":\"codeScanningTools\",\"description\":\"Tools that must provide code scanning results for this rule to pass.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CodeScanningToolInput\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CodeScanningTool\",\"description\":\"A tool that must provide code scanning results for this rule to pass.\",\"fields\":[{\"name\":\"alertsThreshold\",\"description\":\"The severity level at which code scanning results that raise alerts block a reference update. For more information on alert severity levels, see \\\"[About code scanning alerts](${externalDocsUrl}/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels).\\\"\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityAlertsThreshold\",\"description\":\"The severity level at which code scanning results that raise security alerts block a reference update. For more information on security severity levels, see \\\"[About code scanning alerts](${externalDocsUrl}/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels).\\\"\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tool\",\"description\":\"The name of a code scanning tool\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CodeScanningToolInput\",\"description\":\"A tool that must provide code scanning results for this rule to pass.\",\"fields\":null,\"inputFields\":[{\"name\":\"alertsThreshold\",\"description\":\"The severity level at which code scanning results that raise alerts block a reference update. For more information on alert severity levels, see \\\"[About code scanning alerts](${externalDocsUrl}/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels).\\\"\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"securityAlertsThreshold\",\"description\":\"The severity level at which code scanning results that raise security alerts block a reference update. For more information on security severity levels, see \\\"[About code scanning alerts](${externalDocsUrl}/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-severity-and-security-severity-levels).\\\"\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"tool\",\"description\":\"The name of a code scanning tool\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CollaboratorAffiliation\",\"description\":\"Collaborators affiliation level with a subject.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OUTSIDE\",\"description\":\"All outside collaborators of an organization-owned subject.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DIRECT\",\"description\":\"All collaborators with permissions to an organization-owned subject, regardless of organization membership status.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALL\",\"description\":\"All collaborators the authenticated user can see.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"description\":\"Represents a comment.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Comment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"description\":\"A comment author association with repository.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MEMBER\",\"description\":\"Author is a member of the organization that owns the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OWNER\",\"description\":\"Author is the owner of the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MANNEQUIN\",\"description\":\"Author is a placeholder for an unclaimed user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COLLABORATOR\",\"description\":\"Author has been invited to collaborate on the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONTRIBUTOR\",\"description\":\"Author has previously committed to the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIRST_TIME_CONTRIBUTOR\",\"description\":\"Author has not previously committed to the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIRST_TIMER\",\"description\":\"Author has not previously committed to GitHub.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"Author has no association with the repository.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"description\":\"The possible errors that will prevent a user from updating a comment.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ARCHIVED\",\"description\":\"Unable to create comment because repository is archived.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INSUFFICIENT_ACCESS\",\"description\":\"You must be the author or have write access to this repository to update this comment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOCKED\",\"description\":\"Unable to create comment because issue is locked.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOGIN_REQUIRED\",\"description\":\"You must be logged in to update this comment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAINTENANCE\",\"description\":\"Repository is under maintenance.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VERIFIED_EMAIL_REQUIRED\",\"description\":\"At least one email address must be verified to update this comment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DENIED\",\"description\":\"You cannot update this comment\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommentDeletedEvent\",\"description\":\"Represents a 'comment_deleted' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedCommentAuthor\",\"description\":\"The user who authored the deleted comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CommentDeletedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"description\":\"Represents a Git commit.\",\"fields\":[{\"name\":\"abbreviatedOid\",\"description\":\"An abbreviated version of the Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"additions\",\"description\":\"The number of additions in this commit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"associatedPullRequests\",\"description\":\"The merged Pull Request that introduced the commit to the repository. If the commit is not present in the default branch, additionally returns open Pull Requests associated with the commit\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PullRequestOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"author\",\"description\":\"Authorship details of the commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authoredByCommitter\",\"description\":\"Check if the committer and the author match.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authoredDate\",\"description\":\"The datetime when this commit was authored.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authors\",\"description\":\"The list of authors for this commit based on the git author and the Co-authored-by\\nmessage trailer. The git author will always be first.\\n\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GitActorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blame\",\"description\":\"Fetches `git blame` information.\",\"args\":[{\"name\":\"path\",\"description\":\"The file whose Git blame information you want.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Blame\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"changedFiles\",\"description\":\"We recommend using the `changedFilesIfAvailable` field instead of `changedFiles`, as `changedFiles` will cause your request to return an error if GitHub is unable to calculate the number of changed files.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`changedFiles` will be removed. Use `changedFilesIfAvailable` instead. Removal on 2023-01-01 UTC.\"},{\"name\":\"changedFilesIfAvailable\",\"description\":\"The number of changed files in this commit. If GitHub is unable to calculate the number of changed files (for example due to a timeout), this will return `null`. We recommend using this field instead of `changedFiles`.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checkSuites\",\"description\":\"The check suites associated with a commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filters the check suites by this type.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckSuiteFilter\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuiteConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comments\",\"description\":\"Comments made on the commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitResourcePath\",\"description\":\"The HTTP path for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitUrl\",\"description\":\"The HTTP URL for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"committedDate\",\"description\":\"The datetime when this commit was committed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"committedViaWeb\",\"description\":\"Check if committed via GitHub web UI.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"committer\",\"description\":\"Committer details of the commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletions\",\"description\":\"The number of deletions in this commit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployments\",\"description\":\"The deployments associated with a commit.\",\"args\":[{\"name\":\"environments\",\"description\":\"Environments to list deployments for\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for deployments returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeploymentOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"file\",\"description\":\"The tree entry representing the file located at the given path.\",\"args\":[{\"name\":\"path\",\"description\":\"The path for the file\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TreeEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"history\",\"description\":\"The linear commit history starting from (and including) this commit, in the same order as `git log`.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"path\",\"description\":\"If non-null, filters history to only show commits touching files under this path.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"author\",\"description\":\"If non-null, filters history to only show commits with matching authorship.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitAuthor\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"since\",\"description\":\"Allows specifying a beginning time or date for fetching commits. Unexpected results may be returned for dates not between 1970-01-01 and 2099-12-13 (inclusive).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitTimestamp\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Allows specifying an ending time or date for fetching commits. Unexpected results may be returned for dates not between 1970-01-01 and 2099-12-13 (inclusive).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitTimestamp\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitHistoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Commit object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"The Git commit message\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"messageBody\",\"description\":\"The Git commit message body\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"messageBodyHTML\",\"description\":\"The commit message body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"messageHeadline\",\"description\":\"The Git commit message headline\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"messageHeadlineHTML\",\"description\":\"The commit message headline rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"The Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"onBehalfOf\",\"description\":\"The organization this commit was made on behalf of.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parents\",\"description\":\"The parents of a commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pushedDate\",\"description\":\"The datetime when this commit was pushed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`pushedDate` is no longer supported. Removal on 2023-07-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The Repository this commit belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"Commit signing information, if present.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"Status information for this commit\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Status\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusCheckRollup\",\"description\":\"Check and Status rollup information for this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollup\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"submodules\",\"description\":\"Returns a list of all submodules in this repository as of this Commit parsed from the .gitmodules file.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SubmoduleConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tarballUrl\",\"description\":\"Returns a URL to download a tarball archive for a repository.\\nNote: For private repositories, these links are temporary and expire after five minutes.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tree\",\"description\":\"Commit's root Tree\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Tree\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"treeResourcePath\",\"description\":\"The HTTP path for the tree of this commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"treeUrl\",\"description\":\"The HTTP URL for the tree of this commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"zipballUrl\",\"description\":\"Returns a URL to download a zipball archive for a repository.\\nNote: For private repositories, these links are temporary and expire after five minutes.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitAuthor\",\"description\":\"Specifies an author for filtering Git commits.\",\"fields\":null,\"inputFields\":[{\"name\":\"id\",\"description\":\"ID of a User to filter by. If non-null, only commits authored by this user will be returned. This field takes precedence over emails.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"emails\",\"description\":\"Email addresses to filter by. Commits authored by any of the specified email addresses will be returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitAuthorEmailPatternParameters\",\"description\":\"Parameters to be used for the commit_author_email_pattern rule\",\"fields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitAuthorEmailPatternParametersInput\",\"description\":\"Parameters to be used for the commit_author_email_pattern rule\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"description\":\"Represents a comment on a given Commit.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"Identifies the comment body.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the commit associated with the comment, if the commit exists.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CommitComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"Identifies the file path associated with the comment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"Identifies the line position associated with the comment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path permalink for this commit comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL permalink for this commit comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"description\":\"The connection type for CommitComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentThread\",\"description\":\"A thread of comments on a commit.\",\"fields\":[{\"name\":\"comments\",\"description\":\"The comments that exist in this thread.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"The commit the comments were made on.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CommitCommentThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The file the comments were made on.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"The position in the diff for the commit that the comment was made on.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitConnection\",\"description\":\"The connection type for Commit.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitContributionOrder\",\"description\":\"Ordering options for commit contribution connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order commit contributions.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommitContributionOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"CommitContributionOrderField\",\"description\":\"Properties by which commit contribution connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OCCURRED_AT\",\"description\":\"Order commit contributions by when they were made.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMIT_COUNT\",\"description\":\"Order commit contributions by how many commits they represent.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitContributionsByRepository\",\"description\":\"This aggregates commits made by a user within one repository.\",\"fields\":[{\"name\":\"contributions\",\"description\":\"The commit contributions, each representing a day.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for commit contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitContributionOrder\",\"ofType\":null},\"defaultValue\":\"{field: OCCURRED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository in which the commits were made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for the user's commits to the repository in this time range.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for the user's commits to the repository in this time range.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitHistoryConnection\",\"description\":\"The connection type for Commit.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitMessage\",\"description\":\"A message to include with a new commit\",\"fields\":null,\"inputFields\":[{\"name\":\"headline\",\"description\":\"The headline of the message.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the message.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitMessagePatternParameters\",\"description\":\"Parameters to be used for the commit_message_pattern rule\",\"fields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitMessagePatternParametersInput\",\"description\":\"Parameters to be used for the commit_message_pattern rule\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommittableBranch\",\"description\":\"A git ref for a commit to be appended to.\\n\\nThe ref must be a branch, i.e. its fully qualified name must start\\nwith `refs/heads/` (although the input is not required to be fully\\nqualified).\\n\\nThe Ref may be specified by its global node ID or by the\\n`repositoryNameWithOwner` and `branchName`.\\n\\n### Examples\\n\\nSpecify a branch using a global node ID:\\n\\n    { \\\"id\\\": \\\"MDM6UmVmMTpyZWZzL2hlYWRzL21haW4=\\\" }\\n\\nSpecify a branch using `repositoryNameWithOwner` and `branchName`:\\n\\n    {\\n      \\\"repositoryNameWithOwner\\\": \\\"github/graphql-client\\\",\\n      \\\"branchName\\\": \\\"main\\\"\\n    }\\n\\n\",\"fields\":null,\"inputFields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Ref to be updated.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryNameWithOwner\",\"description\":\"The nameWithOwner of the repository to commit to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"branchName\",\"description\":\"The unqualified name of the branch to append the commit to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitterEmailPatternParameters\",\"description\":\"Parameters to be used for the committer_email_pattern rule\",\"fields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitterEmailPatternParametersInput\",\"description\":\"Parameters to be used for the committer_email_pattern rule\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Comparison\",\"description\":\"Represents a comparison between two commit revisions.\",\"fields\":[{\"name\":\"aheadBy\",\"description\":\"The number of commits ahead of the base branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseTarget\",\"description\":\"The base revision of this comparison.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"behindBy\",\"description\":\"The number of commits behind the base branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commits\",\"description\":\"The commits which compose this comparison.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ComparisonCommitConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headTarget\",\"description\":\"The head revision of this comparison.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Comparison object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The status of this comparison.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ComparisonStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ComparisonCommitConnection\",\"description\":\"The connection type for Commit.\",\"fields\":[{\"name\":\"authorCount\",\"description\":\"The total count of authors and co-authors across all commits.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ComparisonStatus\",\"description\":\"The status of a git comparison between two refs.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DIVERGED\",\"description\":\"The head ref is both ahead and behind of the base ref, indicating git history has diverged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AHEAD\",\"description\":\"The head ref is ahead of the base ref.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BEHIND\",\"description\":\"The head ref is behind the base ref.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IDENTICAL\",\"description\":\"The head ref and base ref are identical.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConnectedEvent\",\"description\":\"Represents a 'connected' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ConnectedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Reference originated in a different repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"Issue or pull request that made the reference.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Issue or pull request which was connected.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ContributingGuidelines\",\"description\":\"The Contributing Guidelines for a repository.\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the Contributing Guidelines.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for the Contributing Guidelines.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for the Contributing Guidelines.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"description\":\"Represents a contribution a user made on GitHub, such as opening an issue.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"JoinedGitHubContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RestrictedContribution\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendar\",\"description\":\"A calendar of contributions made on GitHub by a user.\",\"fields\":[{\"name\":\"colors\",\"description\":\"A list of hex color codes used in this calendar. The darker the color, the more contributions it represents.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isHalloween\",\"description\":\"Determine if the color set was chosen because it's currently Halloween.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"months\",\"description\":\"A list of the months of contributions in this calendar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarMonth\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalContributions\",\"description\":\"The count of total contributions in the calendar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"weeks\",\"description\":\"A list of the weeks of contributions in this calendar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarWeek\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarDay\",\"description\":\"Represents a single day of contributions on GitHub by a user.\",\"fields\":[{\"name\":\"color\",\"description\":\"The hex color code that represents how many contributions were made on this day compared to others in the calendar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributionCount\",\"description\":\"How many contributions were made by the user on this day.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributionLevel\",\"description\":\"Indication of contributions, relative to other days. Can be used to indicate which color to represent this day on a calendar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ContributionLevel\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"date\",\"description\":\"The day this square represents.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"weekday\",\"description\":\"A number representing which day of the week this square represents, e.g., 1 is Monday.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarMonth\",\"description\":\"A month of contributions in a user's contribution graph.\",\"fields\":[{\"name\":\"firstDay\",\"description\":\"The date of the first day of this month.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the month.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalWeeks\",\"description\":\"How many weeks started in this month.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"year\",\"description\":\"The year the month occurred in.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarWeek\",\"description\":\"A week of contributions in a user's contribution graph.\",\"fields\":[{\"name\":\"contributionDays\",\"description\":\"The days of contributions in this week.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendarDay\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"firstDay\",\"description\":\"The date of the earliest square in this week.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ContributionLevel\",\"description\":\"Varying levels of contributions from none to many.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NONE\",\"description\":\"No contributions occurred.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIRST_QUARTILE\",\"description\":\"Lowest 25% of days of contributions.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SECOND_QUARTILE\",\"description\":\"Second lowest 25% of days of contributions. More contributions than the first quartile.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THIRD_QUARTILE\",\"description\":\"Second highest 25% of days of contributions. More contributions than second quartile, less than the fourth quartile.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FOURTH_QUARTILE\",\"description\":\"Highest 25% of days of contributions. More contributions than the third quartile.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"description\":\"Ordering options for contribution connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ContributionsCollection\",\"description\":\"A collection of contributions made by a user, including opened issues, commits, and pull requests.\\nContributions in private and internal repositories are only included with the optional read:user scope.\\n\",\"fields\":[{\"name\":\"commitContributionsByRepository\",\"description\":\"Commit contributions made by the user, grouped by repository.\",\"args\":[{\"name\":\"maxRepositories\",\"description\":\"How many repositories should be included.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"25\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitContributionsByRepository\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributionCalendar\",\"description\":\"A calendar of this user's contributions on GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ContributionCalendar\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributionYears\",\"description\":\"The years the user has been making contributions with the most recent year first.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"doesEndInCurrentMonth\",\"description\":\"Determine if this collection's time span ends in the current month.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"earliestRestrictedContributionDate\",\"description\":\"The date of the first restricted contribution the user made in this time period. Can only be non-null when the user has enabled private contribution counts.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"endedAt\",\"description\":\"The ending date and time of this collection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"firstIssueContribution\",\"description\":\"The first issue the user opened on GitHub. This will be null if that issue was opened outside the collection's time range and ignoreTimeRange is false. If the issue is not visible but the user has opted to show private contributions, a RestrictedContribution will be returned.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"CreatedIssueOrRestrictedContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"firstPullRequestContribution\",\"description\":\"The first pull request the user opened on GitHub. This will be null if that pull request was opened outside the collection's time range and ignoreTimeRange is not true. If the pull request is not visible but the user has opted to show private contributions, a RestrictedContribution will be returned.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"CreatedPullRequestOrRestrictedContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"firstRepositoryContribution\",\"description\":\"The first repository the user created on GitHub. This will be null if that first repository was created outside the collection's time range and ignoreTimeRange is false. If the repository is not visible, then a RestrictedContribution is returned.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"CreatedRepositoryOrRestrictedContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasActivityInThePast\",\"description\":\"Does the user have any more activity in the timeline that occurred prior to the collection's time range?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasAnyContributions\",\"description\":\"Determine if there are any contributions in this collection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasAnyRestrictedContributions\",\"description\":\"Determine if the user made any contributions in this time frame whose details are not visible because they were made in a private repository. Can only be true if the user enabled private contribution counts.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSingleDay\",\"description\":\"Whether or not the collector's time span is all within the same day.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueContributions\",\"description\":\"A list of issues the user opened.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"excludeFirst\",\"description\":\"Should the user's first issue ever be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented issue be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueContributionsByRepository\",\"description\":\"Issue contributions made by the user, grouped by repository.\",\"args\":[{\"name\":\"maxRepositories\",\"description\":\"How many repositories should be included.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"25\"},{\"name\":\"excludeFirst\",\"description\":\"Should the user's first issue ever be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented issue be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueContributionsByRepository\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"joinedGitHubContribution\",\"description\":\"When the user signed up for GitHub. This will be null if that sign up date falls outside the collection's time range and ignoreTimeRange is false.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"JoinedGitHubContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestRestrictedContributionDate\",\"description\":\"The date of the most recent restricted contribution the user made in this time period. Can only be non-null when the user has enabled private contribution counts.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mostRecentCollectionWithActivity\",\"description\":\"When this collection's time range does not include any activity from the user, use this\\nto get a different collection from an earlier time range that does have activity.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ContributionsCollection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mostRecentCollectionWithoutActivity\",\"description\":\"Returns a different contributions collection from an earlier time range than this one\\nthat does not have any contributions.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ContributionsCollection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"popularIssueContribution\",\"description\":\"The issue the user opened on GitHub that received the most comments in the specified\\ntime frame.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"popularPullRequestContribution\",\"description\":\"The pull request the user opened on GitHub that received the most comments in the\\nspecified time frame.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestContributions\",\"description\":\"Pull request contributions made by the user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"excludeFirst\",\"description\":\"Should the user's first pull request ever be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented pull request be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestContributionsByRepository\",\"description\":\"Pull request contributions made by the user, grouped by repository.\",\"args\":[{\"name\":\"maxRepositories\",\"description\":\"How many repositories should be included.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"25\"},{\"name\":\"excludeFirst\",\"description\":\"Should the user's first pull request ever be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented pull request be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestContributionsByRepository\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReviewContributions\",\"description\":\"Pull request review contributions made by the user. Returns the most recently\\nsubmitted review for each PR reviewed by the user.\\n\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReviewContributionsByRepository\",\"description\":\"Pull request review contributions made by the user, grouped by repository.\",\"args\":[{\"name\":\"maxRepositories\",\"description\":\"How many repositories should be included.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"25\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewContributionsByRepository\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryContributions\",\"description\":\"A list of repositories owned by the user that the user created in this time range.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"excludeFirst\",\"description\":\"Should the user's first repository ever be excluded from the result.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"restrictedContributionsCount\",\"description\":\"A count of contributions made by the user that the viewer cannot access. Only non-zero when the user has chosen to share their private contribution counts.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startedAt\",\"description\":\"The beginning date and time of this collection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCommitContributions\",\"description\":\"How many commits were made by the user in this time span.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalIssueContributions\",\"description\":\"How many issues the user opened.\",\"args\":[{\"name\":\"excludeFirst\",\"description\":\"Should the user's first issue ever be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented issue be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalPullRequestContributions\",\"description\":\"How many pull requests the user opened.\",\"args\":[{\"name\":\"excludeFirst\",\"description\":\"Should the user's first pull request ever be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented pull request be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalPullRequestReviewContributions\",\"description\":\"How many pull request reviews the user left.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoriesWithContributedCommits\",\"description\":\"How many different repositories the user committed to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoriesWithContributedIssues\",\"description\":\"How many different repositories the user opened issues in.\",\"args\":[{\"name\":\"excludeFirst\",\"description\":\"Should the user's first issue ever be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented issue be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoriesWithContributedPullRequestReviews\",\"description\":\"How many different repositories the user left pull request reviews in.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoriesWithContributedPullRequests\",\"description\":\"How many different repositories the user opened pull requests in.\",\"args\":[{\"name\":\"excludeFirst\",\"description\":\"Should the user's first pull request ever be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"excludePopular\",\"description\":\"Should the user's most commented pull request be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoryContributions\",\"description\":\"How many repositories the user created.\",\"args\":[{\"name\":\"excludeFirst\",\"description\":\"Should the user's first repository ever be excluded from this count.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made the contributions in this collection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertProjectCardNoteToIssueInput\",\"description\":\"Autogenerated input type of ConvertProjectCardNoteToIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectCardId\",\"description\":\"The ProjectCard ID to convert.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to create the issue in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the newly created issue. Defaults to the card's note text.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the newly created issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertProjectCardNoteToIssuePayload\",\"description\":\"Autogenerated return type of ConvertProjectCardNoteToIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectCard\",\"description\":\"The updated ProjectCard.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertProjectV2DraftIssueItemToIssueInput\",\"description\":\"Autogenerated input type of ConvertProjectV2DraftIssueItemToIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the draft issue ProjectV2Item to convert.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to create the issue in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertProjectV2DraftIssueItemToIssuePayload\",\"description\":\"Autogenerated return type of ConvertProjectV2DraftIssueItemToIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The updated project item.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertPullRequestToDraftInput\",\"description\":\"Autogenerated input type of ConvertPullRequestToDraft\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to convert to draft\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertPullRequestToDraftPayload\",\"description\":\"Autogenerated return type of ConvertPullRequestToDraft.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that is now a draft.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertToDraftEvent\",\"description\":\"Represents a 'convert_to_draft' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ConvertToDraftEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this convert to draft event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this convert to draft event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedFromDraftEvent\",\"description\":\"Represents a 'converted_from_draft' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ConvertedFromDraftEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasAutomated\",\"description\":\"Did this event result from workflow automation?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Event\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedNoteToIssueEvent\",\"description\":\"Represents a 'converted_note_to_issue' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ConvertedNoteToIssueEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectCard\",\"description\":\"Project card referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectColumnName\",\"description\":\"Column name referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedToDiscussionEvent\",\"description\":\"Represents a 'converted_to_discussion' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that the issue was converted into.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ConvertedToDiscussionEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CopilotCodeReviewParameters\",\"description\":\"Request Copilot code review for new pull requests automatically if the author has access to Copilot code review and their premium requests quota has not reached the limit.\",\"fields\":[{\"name\":\"reviewDraftPullRequests\",\"description\":\"Copilot automatically reviews draft pull requests before they are marked as ready for review.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewOnPush\",\"description\":\"Copilot automatically reviews each new push to the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CopilotCodeReviewParametersInput\",\"description\":\"Request Copilot code review for new pull requests automatically if the author has access to Copilot code review and their premium requests quota has not reached the limit.\",\"fields\":null,\"inputFields\":[{\"name\":\"reviewDraftPullRequests\",\"description\":\"Copilot automatically reviews draft pull requests before they are marked as ready for review.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"reviewOnPush\",\"description\":\"Copilot automatically reviews each new push to the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CopilotEndpoints\",\"description\":\"Copilot endpoint information\",\"fields\":[{\"name\":\"api\",\"description\":\"Copilot API endpoint\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originTracker\",\"description\":\"Copilot origin tracker endpoint\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"proxy\",\"description\":\"Copilot proxy endpoint\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"telemetry\",\"description\":\"Copilot telemetry endpoint\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CopyProjectV2Input\",\"description\":\"Autogenerated input type of CopyProjectV2\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the source Project to copy.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The owner ID of the new project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"includeDraftIssues\",\"description\":\"Include draft issues in the new project\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CopyProjectV2Payload\",\"description\":\"Autogenerated return type of CopyProjectV2.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The copied project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateAttributionInvitationInput\",\"description\":\"Autogenerated input type of CreateAttributionInvitation\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The Node ID of the owner scoping the reattributable data.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sourceId\",\"description\":\"The Node ID of the account owning the data to reattribute.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"targetId\",\"description\":\"The Node ID of the account which may claim the data.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateAttributionInvitationPayload\",\"description\":\"Autogenerated return type of CreateAttributionInvitation.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The owner scoping the reattributable data.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"The account owning the data to reattribute.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Claimable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"target\",\"description\":\"The account which may claim the data.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Claimable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateBranchProtectionRuleInput\",\"description\":\"Autogenerated input type of CreateBranchProtectionRule\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The global relay id of the repository in which a new branch protection rule should be created in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The glob-like pattern used to determine matching branches.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requiresApprovingReviews\",\"description\":\"Are approving reviews required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"Number of approving reviews required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresCommitSignatures\",\"description\":\"Are commits required to be signed.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresLinearHistory\",\"description\":\"Are merge commits prohibited from being pushed to this branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"blocksCreations\",\"description\":\"Is branch creation a protected operation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"allowsForcePushes\",\"description\":\"Are force pushes allowed on this branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"allowsDeletions\",\"description\":\"Can this branch be deleted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isAdminEnforced\",\"description\":\"Can admins override branch protection.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresStatusChecks\",\"description\":\"Are status checks required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresStrictStatusChecks\",\"description\":\"Are branches required to be up to date before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresCodeOwnerReviews\",\"description\":\"Are reviews from code owners required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"dismissesStaleReviews\",\"description\":\"Will new commits pushed to matching branches dismiss pull request review approvals.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"restrictsReviewDismissals\",\"description\":\"Is dismissal of pull request reviews restricted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"reviewDismissalActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to dismiss reviews on pull requests targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"bypassPullRequestActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to bypass pull requests targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"bypassForcePushActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to bypass force push targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"restrictsPushes\",\"description\":\"Is pushing to matching branches restricted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pushActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to push to matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiredStatusCheckContexts\",\"description\":\"List of required status check contexts that must pass for commits to be accepted to matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"The list of required status checks\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredStatusCheckInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiresDeployments\",\"description\":\"Are successful deployments required before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredDeploymentEnvironments\",\"description\":\"The list of required deployment environments\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiresConversationResolution\",\"description\":\"Are conversations required to be resolved before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requireLastPushApproval\",\"description\":\"Whether the most recent push must be approved by someone other than the person who pushed it\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockBranch\",\"description\":\"Whether to set the branch as read-only. If this is true, users will not be able to push to the branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockAllowsFetchAndMerge\",\"description\":\"Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateBranchProtectionRulePayload\",\"description\":\"Autogenerated return type of CreateBranchProtectionRule.\",\"fields\":[{\"name\":\"branchProtectionRule\",\"description\":\"The newly created BranchProtectionRule.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCheckRunInput\",\"description\":\"Autogenerated input type of CreateCheckRun\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the check.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"headSha\",\"description\":\"The SHA of the head commit.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"detailsUrl\",\"description\":\"The URL of the integrator's site that has the full details of the check.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"externalId\",\"description\":\"A reference for the run on the integrator's system.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"status\",\"description\":\"The current status.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RequestableCheckStatusState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"startedAt\",\"description\":\"The time that the check run began.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"conclusion\",\"description\":\"The final conclusion of the check.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"completedAt\",\"description\":\"The time that the check run finished.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"output\",\"description\":\"Descriptive details about the run.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunOutput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"actions\",\"description\":\"Possible further actions the integrator can perform, which a user may trigger.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunAction\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateCheckRunPayload\",\"description\":\"Autogenerated return type of CreateCheckRun.\",\"fields\":[{\"name\":\"checkRun\",\"description\":\"The newly created check run.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCheckSuiteInput\",\"description\":\"Autogenerated input type of CreateCheckSuite\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"headSha\",\"description\":\"The SHA of the head commit.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateCheckSuitePayload\",\"description\":\"Autogenerated return type of CreateCheckSuite.\",\"fields\":[{\"name\":\"checkSuite\",\"description\":\"The newly created check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCommitOnBranchInput\",\"description\":\"Autogenerated input type of CreateCommitOnBranch\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"branch\",\"description\":\"The Ref to be updated.  Must be a branch.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommittableBranch\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"fileChanges\",\"description\":\"A description of changes to files in this commit.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileChanges\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"message\",\"description\":\"The commit message the be included with the commit.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitMessage\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"expectedHeadOid\",\"description\":\"The git commit oid expected at the head of the branch prior to the commit\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateCommitOnBranchPayload\",\"description\":\"Autogenerated return type of CreateCommitOnBranch.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"The new commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The ref which has been updated to point to the new commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDeploymentInput\",\"description\":\"Autogenerated input type of CreateDeployment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"refId\",\"description\":\"The node ID of the ref to be deployed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"autoMerge\",\"description\":\"Attempt to automatically merge the default branch into the requested ref, defaults to true.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"requiredContexts\",\"description\":\"The status contexts to verify against commit status checks. To bypass required contexts, pass an empty array. Defaults to all unique contexts.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"Short description of the deployment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"},{\"name\":\"environment\",\"description\":\"Name for the target deployment environment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"production\\\"\"},{\"name\":\"task\",\"description\":\"Specifies a task to execute.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"deploy\\\"\"},{\"name\":\"payload\",\"description\":\"JSON payload with extra information about the deployment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"{}\\\"\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateDeploymentPayload\",\"description\":\"Autogenerated return type of CreateDeployment.\",\"fields\":[{\"name\":\"autoMerged\",\"description\":\"True if the default branch has been auto-merged into the deployment ref.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployment\",\"description\":\"The new deployment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDeploymentStatusInput\",\"description\":\"Autogenerated input type of CreateDeploymentStatus\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"deploymentId\",\"description\":\"The node ID of the deployment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"The state of the deployment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DeploymentStatusState\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A short description of the status. Maximum length of 140 characters.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"},{\"name\":\"environment\",\"description\":\"If provided, updates the environment of the deploy. Otherwise, does not modify the environment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"environmentUrl\",\"description\":\"Sets the URL for accessing your environment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"},{\"name\":\"autoInactive\",\"description\":\"Adds a new inactive status to all non-transient, non-production environment deployments with the same repository and environment name as the created status's deployment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"logUrl\",\"description\":\"The log URL to associate with this status.       This URL should contain output to keep the user updated while the task is running       or serve as historical information for what happened in the deployment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateDeploymentStatusPayload\",\"description\":\"Autogenerated return type of CreateDeploymentStatus.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deploymentStatus\",\"description\":\"The new deployment status.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDiscussionInput\",\"description\":\"Autogenerated input type of CreateDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The id of the repository on which to create the discussion.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the discussion.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the discussion.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"categoryId\",\"description\":\"The id of the discussion category to associate with this discussion.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateDiscussionPayload\",\"description\":\"Autogenerated return type of CreateDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that was just created.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateEnterpriseOrganizationInput\",\"description\":\"Autogenerated input type of CreateEnterpriseOrganization\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise owning the new organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of the new organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"profileName\",\"description\":\"The profile name of the new organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"billingEmail\",\"description\":\"The email used for sending billing receipts.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"adminLogins\",\"description\":\"The logins for the administrators of the new organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateEnterpriseOrganizationPayload\",\"description\":\"Autogenerated return type of CreateEnterpriseOrganization.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise that owns the created organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that was created.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateEnvironmentInput\",\"description\":\"Autogenerated input type of CreateEnvironment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the environment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateEnvironmentPayload\",\"description\":\"Autogenerated return type of CreateEnvironment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The new or existing environment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIpAllowListEntryInput\",\"description\":\"Autogenerated input type of CreateIpAllowListEntry\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner for which to create the new IP allow list entry.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"allowListValue\",\"description\":\"An IP address or range of addresses in CIDR notation.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"An optional name for the IP allow list entry.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isActive\",\"description\":\"Whether the IP allow list entry is active when an IP allow list is enabled.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateIpAllowListEntryPayload\",\"description\":\"Autogenerated return type of CreateIpAllowListEntry.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntry\",\"description\":\"The IP allow list entry that was created.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIssueInput\",\"description\":\"Autogenerated input type of CreateIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title for the issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body for the issue description.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"The Node ID of assignees for this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"milestoneId\",\"description\":\"The Node ID of the milestone for this issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelIds\",\"description\":\"An array of Node IDs of labels for this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"projectIds\",\"description\":\"An array of Node IDs for projects associated with this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"projectV2Ids\",\"description\":\"An array of Node IDs for Projects V2 associated with this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"issueTemplate\",\"description\":\"The name of an issue template in the repository, assigns labels and assignees from the template to the issue\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueTypeId\",\"description\":\"The Node ID of the issue type for this issue\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"parentIssueId\",\"description\":\"The Node ID of the parent issue to add this new issue to\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateIssuePayload\",\"description\":\"Autogenerated return type of CreateIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The new issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIssueTypeInput\",\"description\":\"Autogenerated input type of CreateIssueType\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID for the organization on which the issue type is created\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"isEnabled\",\"description\":\"Whether or not the issue type is enabled on the org level\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"Name of the new issue type\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"Description of the new issue type\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"color\",\"description\":\"Color for the issue type\",\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueTypeColor\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateIssueTypePayload\",\"description\":\"Autogenerated return type of CreateIssueType.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The newly created issue type\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateLabelInput\",\"description\":\"Autogenerated input type of CreateLabel\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"color\",\"description\":\"A 6 character hex code, without the leading #, identifying the color of the label.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the label.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A brief description of the label, such as its purpose.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateLabelPayload\",\"description\":\"Autogenerated return type of CreateLabel.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"The new label.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateLinkedBranchInput\",\"description\":\"Autogenerated input type of CreateLinkedBranch\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"ID of the issue to link to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"oid\",\"description\":\"The commit SHA to base the new branch on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the new branch. Defaults to issue number and title.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"ID of the repository to create the branch in. Defaults to the issue repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateLinkedBranchPayload\",\"description\":\"Autogenerated return type of CreateLinkedBranch.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was linked to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"linkedBranch\",\"description\":\"The new branch issue reference.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LinkedBranch\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateMigrationSourceInput\",\"description\":\"Autogenerated input type of CreateMigrationSource\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The migration source name.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"url\",\"description\":\"The migration source URL, for example `https://github.com` or `https://monalisa.ghe.com`.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"accessToken\",\"description\":\"The migration source access token.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"type\",\"description\":\"The migration source type.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MigrationSourceType\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the organization that will own the migration source.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"githubPat\",\"description\":\"The GitHub personal access token of the user importing to the target repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateMigrationSourcePayload\",\"description\":\"Autogenerated return type of CreateMigrationSource.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"migrationSource\",\"description\":\"The created migration source.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MigrationSource\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectInput\",\"description\":\"Autogenerated input type of CreateProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The owner ID to create the project under.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The description of project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"template\",\"description\":\"The name of the GitHub-provided template.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectTemplate\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryIds\",\"description\":\"A list of repository IDs to create as linked repositories for the project\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateProjectPayload\",\"description\":\"Autogenerated return type of CreateProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The new project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2FieldInput\",\"description\":\"Autogenerated input type of CreateProjectV2Field\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to create the field in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"dataType\",\"description\":\"The data type of the field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2CustomFieldType\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"singleSelectOptions\",\"description\":\"Options for a single select field. At least one value is required if data_type is SINGLE_SELECT\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2SingleSelectFieldOptionInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"iterationConfiguration\",\"description\":\"Configuration for an iteration field.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2IterationFieldConfigurationInput\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2FieldPayload\",\"description\":\"Autogenerated return type of CreateProjectV2Field.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Field\",\"description\":\"The new field.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2Input\",\"description\":\"Autogenerated input type of CreateProjectV2\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The owner ID to create the project under.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The repository to link the project to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"teamId\",\"description\":\"The team to link the project to. The team will be granted read permissions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2Payload\",\"description\":\"Autogenerated return type of CreateProjectV2.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The new project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2StatusUpdateInput\",\"description\":\"Autogenerated input type of CreateProjectV2StatusUpdate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to create the status update in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"startDate\",\"description\":\"The start date of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"targetDate\",\"description\":\"The target date of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"status\",\"description\":\"The status of the status update.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateStatus\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2StatusUpdatePayload\",\"description\":\"Autogenerated return type of CreateProjectV2StatusUpdate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusUpdate\",\"description\":\"The status update updated in the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreatePullRequestInput\",\"description\":\"Autogenerated input type of CreatePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The name of the branch you want your changes pulled into. This should be an existing branch\\non the current repository. You cannot update the base branch on a pull request to point\\nto another repository.\\n\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The name of the branch where your changes are implemented. For cross-repository pull requests\\nin the same network, namespace `head_ref_name` with a user like this: `username:branch`.\\n\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"headRepositoryId\",\"description\":\"The Node ID of the head repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the pull request.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maintainerCanModify\",\"description\":\"Indicates whether maintainers can modify the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"draft\",\"description\":\"Indicates whether this pull request should be a draft.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatePullRequestPayload\",\"description\":\"Autogenerated return type of CreatePullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The new pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRefInput\",\"description\":\"Autogenerated input type of CreateRef\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the Repository to create the Ref in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The fully qualified name of the new Ref (ie: `refs/heads/my_new_branch`).\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"oid\",\"description\":\"The GitObjectID that the new Ref shall target. Must point to a commit.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateRefPayload\",\"description\":\"Autogenerated return type of CreateRef.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The newly created ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRepositoryInput\",\"description\":\"Autogenerated input type of CreateRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the new repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner for the new repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A short description of the new repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"Indicates the repository's visibility level.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"template\",\"description\":\"Whether this repository should be marked as a template such that anyone who can access it can create new repositories with the same files and directory structure.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"homepageUrl\",\"description\":\"The URL for a web page about this repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasWikiEnabled\",\"description\":\"Indicates if the repository should have the wiki feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"hasIssuesEnabled\",\"description\":\"Indicates if the repository should have the issues feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"teamId\",\"description\":\"When an organization is specified as the owner, this ID identifies the team that should be granted access to the new repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateRepositoryPayload\",\"description\":\"Autogenerated return type of CreateRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The new repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRepositoryRulesetInput\",\"description\":\"Autogenerated input type of CreateRepositoryRuleset\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sourceId\",\"description\":\"The global relay id of the source in which a new ruleset should be created in.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the ruleset.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"target\",\"description\":\"The target of the ruleset.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"rules\",\"description\":\"The list of rules for this ruleset\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"conditions\",\"description\":\"The set of conditions for this ruleset\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleConditionsInput\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"enforcement\",\"description\":\"The enforcement level for this ruleset\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RuleEnforcement\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"bypassActors\",\"description\":\"A list of actors that are allowed to bypass rules in this ruleset.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRulesetBypassActorInput\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateRepositoryRulesetPayload\",\"description\":\"Autogenerated return type of CreateRepositoryRuleset.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ruleset\",\"description\":\"The newly created Ruleset.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSavedNotificationThreadInput\",\"description\":\"Autogenerated input type of CreateSavedNotificationThread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The notification thread's id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateSavedNotificationThreadPayload\",\"description\":\"Autogenerated return type of CreateSavedNotificationThread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the saved notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorsListingInput\",\"description\":\"Autogenerated input type of CreateSponsorsListing\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the organization to create a GitHub Sponsors profile for, if desired. Defaults to creating a GitHub Sponsors profile for the authenticated user if omitted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fiscalHostLogin\",\"description\":\"The username of the supported fiscal host's GitHub organization, if you want to receive sponsorship payouts through a fiscal host rather than directly to a bank account. For example, 'Open-Source-Collective' for Open Source Collective or 'numfocus' for numFOCUS. Case insensitive. See https://docs.github.com/sponsors/receiving-sponsorships-through-github-sponsors/using-a-fiscal-host-to-receive-github-sponsors-payouts for more information.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fiscallyHostedProjectProfileUrl\",\"description\":\"The URL for your profile page on the fiscal host's website, e.g., https://opencollective.com/babel or https://numfocus.org/project/bokeh. Required if fiscalHostLogin is specified.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"billingCountryOrRegionCode\",\"description\":\"The country or region where the sponsorable's bank account is located. Required if fiscalHostLogin is not specified, ignored when fiscalHostLogin is specified.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorsCountryOrRegionCode\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"residenceCountryOrRegionCode\",\"description\":\"The country or region where the sponsorable resides. This is for tax purposes. Required if the sponsorable is yourself, ignored when sponsorableLogin specifies an organization.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorsCountryOrRegionCode\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"contactEmail\",\"description\":\"The email address we should use to contact you about the GitHub Sponsors profile being created. This will not be shared publicly. Must be a verified email address already on your GitHub account. Only relevant when the sponsorable is yourself. Defaults to your primary email address on file if omitted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fullDescription\",\"description\":\"Provide an introduction to serve as the main focus that appears on your GitHub Sponsors profile. It's a great opportunity to help potential sponsors learn more about you, your work, and why their sponsorship is important to you. GitHub-flavored Markdown is supported.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorsListingPayload\",\"description\":\"Autogenerated return type of CreateSponsorsListing.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The new GitHub Sponsors profile.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorsTierInput\",\"description\":\"Autogenerated input type of CreateSponsorsTier\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableId\",\"description\":\"The ID of the user or organization who owns the GitHub Sponsors profile. Defaults to the current user if omitted and sponsorableLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the user or organization who owns the GitHub Sponsors profile. Defaults to the current user if omitted and sponsorableId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"amount\",\"description\":\"The value of the new tier in US dollars. Valid values: 1-12000.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"isRecurring\",\"description\":\"Whether sponsorships using this tier should happen monthly/yearly or just once.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"repositoryId\",\"description\":\"Optional ID of the private repository that sponsors at this tier should gain read-only access to. Must be owned by an organization.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryOwnerLogin\",\"description\":\"Optional login of the organization owner of the private repository that sponsors at this tier should gain read-only access to. Necessary if repositoryName is given. Will be ignored if repositoryId is given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryName\",\"description\":\"Optional name of the private repository that sponsors at this tier should gain read-only access to. Must be owned by an organization. Necessary if repositoryOwnerLogin is given. Will be ignored if repositoryId is given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"welcomeMessage\",\"description\":\"Optional message new sponsors at this tier will receive.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A description of what this tier is, what perks sponsors might receive, what a sponsorship at this tier means for you, etc.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"publish\",\"description\":\"Whether to make the tier available immediately for sponsors to choose. Defaults to creating a draft tier that will not be publicly visible.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorsTierPayload\",\"description\":\"Autogenerated return type of CreateSponsorsTier.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsTier\",\"description\":\"The new tier.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorshipInput\",\"description\":\"Autogenerated input type of CreateSponsorship\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorId\",\"description\":\"The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorLogin\",\"description\":\"The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableId\",\"description\":\"The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"The ID of one of sponsorable's existing tiers to sponsor at. Required if amount is not specified.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"amount\",\"description\":\"The amount to pay to the sponsorable in US dollars. Required if a tierId is not specified. Valid values: 1-12000.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isRecurring\",\"description\":\"Whether the sponsorship should happen monthly/yearly or just this one time. Required if a tierId is not specified.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"receiveEmails\",\"description\":\"Whether the sponsor should receive email updates from the sponsorable.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"privacyLevel\",\"description\":\"Specify whether others should be able to see that the sponsor is sponsoring the sponsorable. Public visibility still does not reveal which tier is used.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"ofType\":null},\"defaultValue\":\"PUBLIC\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorshipPayload\",\"description\":\"Autogenerated return type of CreateSponsorship.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorship\",\"description\":\"The sponsorship that was started.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorshipsInput\",\"description\":\"Autogenerated input type of CreateSponsorships\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorLogin\",\"description\":\"The username of the user or organization who is acting as the sponsor, paying for the sponsorships.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sponsorships\",\"description\":\"The list of maintainers to sponsor and for how much apiece.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"BulkSponsorship\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"receiveEmails\",\"description\":\"Whether the sponsor should receive email updates from the sponsorables.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"privacyLevel\",\"description\":\"Specify whether others should be able to see that the sponsor is sponsoring the sponsorables. Public visibility still does not reveal the dollar value of the sponsorship.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"ofType\":null},\"defaultValue\":\"PUBLIC\"},{\"name\":\"recurring\",\"description\":\"Whether the sponsorships created should continue each billing cycle for the sponsor (monthly or annually), versus lasting only a single month. Defaults to one-time sponsorships.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorshipsPayload\",\"description\":\"Autogenerated return type of CreateSponsorships.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorables\",\"description\":\"The users and organizations who received a sponsorship.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateTeamDiscussionCommentInput\",\"description\":\"Autogenerated input type of CreateTeamDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"discussionId\",\"description\":\"The ID of the discussion to which the comment belongs. This field is required.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `discussionId` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The content of the comment. This field is required.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `body` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateTeamDiscussionCommentPayload\",\"description\":\"Autogenerated return type of CreateTeamDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussionComment\",\"description\":\"The new comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateTeamDiscussionInput\",\"description\":\"Autogenerated input type of CreateTeamDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"teamId\",\"description\":\"The ID of the team to which the discussion belongs. This field is required.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `teamId` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the discussion. This field is required.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `title` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The content of the discussion. This field is required.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `body` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"private\",\"description\":\"If true, restricts the visibility of this discussion to team members and organization owners. If false or not specified, allows any organization member to view this discussion.\\n\\n**Upcoming Change on 2024-07-01 UTC**\\n**Description:** `private` will be removed. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement.\\n**Reason:** The Team Discussions feature is deprecated in favor of Organization Discussions.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateTeamDiscussionPayload\",\"description\":\"Autogenerated return type of CreateTeamDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussion\",\"description\":\"The new discussion.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateUserListInput\",\"description\":\"Autogenerated input type of CreateUserList\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the new list\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A description of the list\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isPrivate\",\"description\":\"Whether or not the list is private\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreateUserListPayload\",\"description\":\"Autogenerated return type of CreateUserList.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"list\",\"description\":\"The list that was just created\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user who created the list\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContribution\",\"description\":\"Represents the contribution a user made by committing to a repository.\",\"fields\":[{\"name\":\"commitCount\",\"description\":\"How many commits were made on this day to this repository by the user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the user made a commit in.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContributionConnection\",\"description\":\"The connection type for CreatedCommitContribution.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContributionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContribution\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of commits across days and repositories in the connection.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContributionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedCommitContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"description\":\"Represents the contribution a user made on GitHub by opening an issue.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was opened.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContributionConnection\",\"description\":\"The connection type for CreatedIssueContribution.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContributionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContributionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"CreatedIssueOrRestrictedContribution\",\"description\":\"Represents either a issue the viewer can access or a restricted contribution.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RestrictedContribution\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"description\":\"Represents the contribution a user made on GitHub by opening a pull request.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that was opened.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContributionConnection\",\"description\":\"The connection type for CreatedPullRequestContribution.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContributionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContributionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"CreatedPullRequestOrRestrictedContribution\",\"description\":\"Represents either a pull request the viewer can access or a restricted contribution.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RestrictedContribution\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContribution\",\"description\":\"Represents the contribution a user made by leaving a review on a pull request.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request the user reviewed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The review the user left on the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository containing the pull request that the user reviewed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContributionConnection\",\"description\":\"The connection type for CreatedPullRequestReviewContribution.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContributionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContribution\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContributionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContribution\",\"description\":\"Represents the contribution a user made on GitHub by creating a repository.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContributionConnection\",\"description\":\"The connection type for CreatedRepositoryContribution.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContributionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContribution\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContributionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContribution\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"CreatedRepositoryOrRestrictedContribution\",\"description\":\"Represents either a repository the viewer can access or a restricted contribution.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CreatedRepositoryContribution\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RestrictedContribution\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"description\":\"Represents a mention made by one issue or pull request to another.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the CrossReferencedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Reference originated in a different repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"referencedAt\",\"description\":\"Identifies when the reference was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"Issue or pull request that made the reference.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"target\",\"description\":\"Issue or pull request to which the reference was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"willCloseTarget\",\"description\":\"Checks if the target will be closed when the source is merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"CvssSeverities\",\"description\":\"The Common Vulnerability Scoring System\",\"fields\":[{\"name\":\"cvssV3\",\"description\":\"The CVSS v3 severity associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CVSS\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cvssV4\",\"description\":\"The CVSS v4 severity associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CVSS\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"Date\",\"description\":\"An ISO-8601 encoded date string.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"description\":\"An ISO-8601 encoded UTC date string.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeclineTopicSuggestionInput\",\"description\":\"Autogenerated input type of DeclineTopicSuggestion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\\n\\n**Upcoming Change on 2024-04-01 UTC**\\n**Description:** `repositoryId` will be removed.\\n**Reason:** Suggested topics are no longer supported\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the suggested topic.\\n\\n**Upcoming Change on 2024-04-01 UTC**\\n**Description:** `name` will be removed.\\n**Reason:** Suggested topics are no longer supported\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"reason\",\"description\":\"The reason why the suggested topic is declined.\\n\\n**Upcoming Change on 2024-04-01 UTC**\\n**Description:** `reason` will be removed.\\n**Reason:** Suggested topics are no longer supported\\n\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TopicSuggestionDeclineReason\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeclineTopicSuggestionPayload\",\"description\":\"Autogenerated return type of DeclineTopicSuggestion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"The declined topic.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DefaultRepositoryPermissionField\",\"description\":\"The possible base permissions for repositories.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NONE\",\"description\":\"No access\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READ\",\"description\":\"Can read repos by default\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITE\",\"description\":\"Can read and write repos by default\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Can read, write, and administrate repos by default\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"description\":\"Entities that can be deleted.\",\"fields\":[{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteBranchProtectionRuleInput\",\"description\":\"Autogenerated input type of DeleteBranchProtectionRule\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"branchProtectionRuleId\",\"description\":\"The global relay id of the branch protection rule to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteBranchProtectionRulePayload\",\"description\":\"Autogenerated return type of DeleteBranchProtectionRule.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDeploymentInput\",\"description\":\"Autogenerated input type of DeleteDeployment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the deployment to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteDeploymentPayload\",\"description\":\"Autogenerated return type of DeleteDeployment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDiscussionCommentInput\",\"description\":\"Autogenerated input type of DeleteDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node id of the discussion comment to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteDiscussionCommentPayload\",\"description\":\"Autogenerated return type of DeleteDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comment\",\"description\":\"The discussion comment that was just deleted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDiscussionInput\",\"description\":\"Autogenerated input type of DeleteDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The id of the discussion to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteDiscussionPayload\",\"description\":\"Autogenerated return type of DeleteDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that was just deleted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteEnvironmentInput\",\"description\":\"Autogenerated input type of DeleteEnvironment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the environment to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteEnvironmentPayload\",\"description\":\"Autogenerated return type of DeleteEnvironment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIpAllowListEntryInput\",\"description\":\"Autogenerated input type of DeleteIpAllowListEntry\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ipAllowListEntryId\",\"description\":\"The ID of the IP allow list entry to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteIpAllowListEntryPayload\",\"description\":\"Autogenerated return type of DeleteIpAllowListEntry.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntry\",\"description\":\"The IP allow list entry that was deleted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueCommentInput\",\"description\":\"Autogenerated input type of DeleteIssueComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the comment to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteIssueCommentPayload\",\"description\":\"Autogenerated return type of DeleteIssueComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueInput\",\"description\":\"Autogenerated input type of DeleteIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the issue to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteIssuePayload\",\"description\":\"Autogenerated return type of DeleteIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the issue belonged to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueTypeInput\",\"description\":\"Autogenerated input type of DeleteIssueType\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueTypeId\",\"description\":\"The ID of the issue type to delete\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteIssueTypePayload\",\"description\":\"Autogenerated return type of DeleteIssueType.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedIssueTypeId\",\"description\":\"The ID of the deleted issue type\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteLabelInput\",\"description\":\"Autogenerated input type of DeleteLabel\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the label to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteLabelPayload\",\"description\":\"Autogenerated return type of DeleteLabel.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteLinkedBranchInput\",\"description\":\"Autogenerated input type of DeleteLinkedBranch\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"linkedBranchId\",\"description\":\"The ID of the linked branch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteLinkedBranchPayload\",\"description\":\"Autogenerated return type of DeleteLinkedBranch.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue the linked branch was unlinked from.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePackageVersionInput\",\"description\":\"Autogenerated input type of DeletePackageVersion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"packageVersionId\",\"description\":\"The ID of the package version to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeletePackageVersionPayload\",\"description\":\"Autogenerated return type of DeletePackageVersion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Whether or not the operation succeeded.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectCardInput\",\"description\":\"Autogenerated input type of DeleteProjectCard\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"cardId\",\"description\":\"The id of the card to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectCardPayload\",\"description\":\"Autogenerated return type of DeleteProjectCard.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"column\",\"description\":\"The column the deleted card was in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedCardId\",\"description\":\"The deleted card ID.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectColumnInput\",\"description\":\"Autogenerated input type of DeleteProjectColumn\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"columnId\",\"description\":\"The id of the column to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectColumnPayload\",\"description\":\"Autogenerated return type of DeleteProjectColumn.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedColumnId\",\"description\":\"The deleted column ID.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project the deleted column was in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectInput\",\"description\":\"Autogenerated input type of DeleteProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The Project ID to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectPayload\",\"description\":\"Autogenerated return type of DeleteProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The repository or organization the project was removed from.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2FieldInput\",\"description\":\"Autogenerated input type of DeleteProjectV2Field\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fieldId\",\"description\":\"The ID of the field to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2FieldPayload\",\"description\":\"Autogenerated return type of DeleteProjectV2Field.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Field\",\"description\":\"The deleted field.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2Input\",\"description\":\"Autogenerated input type of DeleteProjectV2\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2ItemInput\",\"description\":\"Autogenerated input type of DeleteProjectV2Item\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project from which the item should be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the item to be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2ItemPayload\",\"description\":\"Autogenerated return type of DeleteProjectV2Item.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedItemId\",\"description\":\"The ID of the deleted item.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2Payload\",\"description\":\"Autogenerated return type of DeleteProjectV2.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The deleted Project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2StatusUpdateInput\",\"description\":\"Autogenerated input type of DeleteProjectV2StatusUpdate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"statusUpdateId\",\"description\":\"The ID of the status update to be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2StatusUpdatePayload\",\"description\":\"Autogenerated return type of DeleteProjectV2StatusUpdate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedStatusUpdateId\",\"description\":\"The ID of the deleted status update.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The project the deleted status update was in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2WorkflowInput\",\"description\":\"Autogenerated input type of DeleteProjectV2Workflow\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"workflowId\",\"description\":\"The ID of the workflow to be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2WorkflowPayload\",\"description\":\"Autogenerated return type of DeleteProjectV2Workflow.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedWorkflowId\",\"description\":\"The ID of the deleted workflow.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The project the deleted workflow was in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePullRequestReviewCommentInput\",\"description\":\"Autogenerated input type of DeletePullRequestReviewComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the comment to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeletePullRequestReviewCommentPayload\",\"description\":\"Autogenerated return type of DeletePullRequestReviewComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The pull request review the deleted comment belonged to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReviewComment\",\"description\":\"The deleted pull request review comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePullRequestReviewInput\",\"description\":\"Autogenerated input type of DeletePullRequestReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the pull request review to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeletePullRequestReviewPayload\",\"description\":\"Autogenerated return type of DeletePullRequestReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The deleted pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteRefInput\",\"description\":\"Autogenerated input type of DeleteRef\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"refId\",\"description\":\"The Node ID of the Ref to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteRefPayload\",\"description\":\"Autogenerated return type of DeleteRef.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteRepositoryRulesetInput\",\"description\":\"Autogenerated input type of DeleteRepositoryRuleset\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryRulesetId\",\"description\":\"The global relay id of the repository ruleset to be deleted.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteRepositoryRulesetPayload\",\"description\":\"Autogenerated return type of DeleteRepositoryRuleset.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteSavedNotificationThreadInput\",\"description\":\"Autogenerated input type of DeleteSavedNotificationThread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The saved notification thread's id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteSavedNotificationThreadPayload\",\"description\":\"Autogenerated return type of DeleteSavedNotificationThread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that deleted the saved notification.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteTeamDiscussionCommentInput\",\"description\":\"Autogenerated input type of DeleteTeamDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the comment to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteTeamDiscussionCommentPayload\",\"description\":\"Autogenerated return type of DeleteTeamDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteTeamDiscussionInput\",\"description\":\"Autogenerated input type of DeleteTeamDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The discussion ID to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteTeamDiscussionPayload\",\"description\":\"Autogenerated return type of DeleteTeamDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteUserListInput\",\"description\":\"Autogenerated input type of DeleteUserList\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"listId\",\"description\":\"The ID of the list to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteUserListPayload\",\"description\":\"Autogenerated return type of DeleteUserList.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The owner of the list that will be deleted\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteVerifiableDomainInput\",\"description\":\"Autogenerated input type of DeleteVerifiableDomain\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the verifiable domain to delete.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeleteVerifiableDomainPayload\",\"description\":\"Autogenerated return type of DeleteVerifiableDomain.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The owning account from which the domain was deleted.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"VerifiableDomainOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"description\":\"Represents a 'demilestoned' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DemilestonedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestoneTitle\",\"description\":\"Identifies the milestone title associated with the 'demilestoned' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Object referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"MilestoneItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependabotUpdate\",\"description\":\"A Dependabot Update for a dependency in a repository\",\"fields\":[{\"name\":\"error\",\"description\":\"The error from a dependency update\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependabotUpdateError\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The associated pull request\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependabotUpdateError\",\"description\":\"An error produced from a Dependabot Update\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the error\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"errorType\",\"description\":\"The error code\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The title of the error\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependency\",\"description\":\"A dependency manifest entry\",\"fields\":[{\"name\":\"hasDependencies\",\"description\":\"Does the dependency itself have dependencies?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packageLabel\",\"description\":\"The original name of the package, as it appears in the manifest.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`packageLabel` will be removed. Use normalized `packageName` field instead. Removal on 2022-10-01 UTC.\"},{\"name\":\"packageManager\",\"description\":\"The dependency package manager\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packageName\",\"description\":\"The name of the package in the canonical form used by the package manager.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packageUrl\",\"description\":\"Public preview: The dependency package URL\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"relationship\",\"description\":\"Public preview: The relationship of the dependency. Can be direct, transitive, or unknown\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository containing the package\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requirements\",\"description\":\"The dependency version requirements\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependencyConnection\",\"description\":\"The connection type for DependencyGraphDependency.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependencyEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependency\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependencyEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependency\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DependencyGraphEcosystem\",\"description\":\"The possible ecosystems of a dependency graph package.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RUBYGEMS\",\"description\":\"Ruby gems hosted at RubyGems.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NPM\",\"description\":\"JavaScript packages hosted at npmjs.com\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PIP\",\"description\":\"Python packages hosted at PyPI.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAVEN\",\"description\":\"Java artifacts hosted at the Maven central repository\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUGET\",\"description\":\".NET packages hosted at the NuGet Gallery\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPOSER\",\"description\":\"PHP packages hosted at packagist.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GO\",\"description\":\"Go modules\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ACTIONS\",\"description\":\"GitHub Actions\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RUST\",\"description\":\"Rust crates\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUB\",\"description\":\"Dart packages hosted at pub.dev\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SWIFT\",\"description\":\"Swift packages\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifest\",\"description\":\"Dependency manifest for a repository\",\"fields\":[{\"name\":\"blobPath\",\"description\":\"Path to view the manifest file blob\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependencies\",\"description\":\"A list of manifest dependencies\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphDependencyConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependenciesCount\",\"description\":\"The number of dependencies listed in the manifest\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"exceedsMaxSize\",\"description\":\"Is the manifest too big to parse?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filename\",\"description\":\"Fully qualified manifest filename\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DependencyGraphManifest object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parseable\",\"description\":\"Were we able to parse the manifest?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository containing the manifest\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifestConnection\",\"description\":\"The connection type for DependencyGraphManifest.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifestEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifestEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployKey\",\"description\":\"A repository deploy key.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enabled\",\"description\":\"Whether or not the deploy key is enabled by policy at the Enterprise or Organization level.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DeployKey object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"key\",\"description\":\"The deploy key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"readOnly\",\"description\":\"Whether or not the deploy key is read only.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The deploy key title.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verified\",\"description\":\"Whether or not the deploy key has been verified.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployKeyConnection\",\"description\":\"The connection type for DeployKey.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeployKeyEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeployKey\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployKeyEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeployKey\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployedEvent\",\"description\":\"Represents a 'deployed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployment\",\"description\":\"The deployment associated with the 'deployed' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DeployedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The ref associated with the 'deployed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"description\":\"Represents triggered deployment instance.\",\"fields\":[{\"name\":\"commit\",\"description\":\"Identifies the commit sha of the deployment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitOid\",\"description\":\"Identifies the oid of the deployment commit, even if the commit has been deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"Identifies the actor who triggered the deployment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The deployment description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The latest environment to which this deployment was made.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Deployment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestEnvironment\",\"description\":\"The latest environment to which this deployment was made.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestStatus\",\"description\":\"The latest status of this deployment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalEnvironment\",\"description\":\"The original environment to which this deployment was made.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Extra information that a deployment system might need.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"Identifies the Ref of the deployment, if the deployment was created by ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Identifies the repository associated with the deployment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The current state of the deployment.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"DeploymentState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statuses\",\"description\":\"A list of statuses associated with the deployment.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatusConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"task\",\"description\":\"The deployment task.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentConnection\",\"description\":\"The connection type for Deployment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentEnvironmentChangedEvent\",\"description\":\"Represents a 'deployment_environment_changed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deploymentStatus\",\"description\":\"The deployment status that updated the deployment environment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DeploymentEnvironmentChangedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeploymentOrder\",\"description\":\"Ordering options for deployment connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order deployments by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DeploymentOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DeploymentOrderField\",\"description\":\"Properties by which deployment connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order collection by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRule\",\"description\":\"A protection rule.\",\"fields\":[{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"preventSelfReview\",\"description\":\"Whether deployments to this environment can be approved by the user who created the deployment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewers\",\"description\":\"The teams or users that can review the deployment\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"timeout\",\"description\":\"The timeout in minutes for this protection rule.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"The type of protection rule.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DeploymentProtectionRuleType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRuleConnection\",\"description\":\"The connection type for DeploymentProtectionRule.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRuleEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRule\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRuleEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DeploymentProtectionRuleType\",\"description\":\"The possible protection rule types.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REQUIRED_REVIEWERS\",\"description\":\"Required reviewers\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAIT_TIMER\",\"description\":\"Wait timer\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BRANCH_POLICY\",\"description\":\"Branch policy\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequest\",\"description\":\"A request to deploy a workflow run to an environment.\",\"fields\":[{\"name\":\"currentUserCanApprove\",\"description\":\"Whether or not the current user can approve the deployment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The target environment of the deployment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewers\",\"description\":\"The teams or users that can review the deployment\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"waitTimer\",\"description\":\"The wait timer in minutes configured in the environment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"waitTimerStartedAt\",\"description\":\"The wait timer in minutes configured in the environment\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequestConnection\",\"description\":\"The connection type for DeploymentRequest.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequestEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequestEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReview\",\"description\":\"A deployment review.\",\"fields\":[{\"name\":\"comment\",\"description\":\"The comment the user left.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environments\",\"description\":\"The environments approved or rejected\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnvironmentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DeploymentReview object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The decision of the user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DeploymentReviewState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that reviewed the deployment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewConnection\",\"description\":\"The connection type for DeploymentReview.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReview\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DeploymentReviewState\",\"description\":\"The possible states for a deployment review.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"APPROVED\",\"description\":\"The deployment was approved.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REJECTED\",\"description\":\"The deployment was rejected.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"DeploymentReviewer\",\"description\":\"Users and teams.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewerConnection\",\"description\":\"The connection type for DeploymentReviewer.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewerEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"DeploymentReviewer\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewerEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"DeploymentReviewer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DeploymentState\",\"description\":\"The possible states in which a deployment can be.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ABANDONED\",\"description\":\"The pending deployment was not updated after 30 minutes.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ACTIVE\",\"description\":\"The deployment is currently active.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DESTROYED\",\"description\":\"An inactive transient deployment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ERROR\",\"description\":\"The deployment experienced an error.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"The deployment has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INACTIVE\",\"description\":\"The deployment is inactive.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING\",\"description\":\"The deployment is pending.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"The deployment was successful.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The deployment has queued\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The deployment is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAITING\",\"description\":\"The deployment is waiting.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"description\":\"Describes the status of a given deployment attempt.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"Identifies the actor who triggered the deployment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployment\",\"description\":\"Identifies the deployment associated with status.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"Identifies the description of the deployment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"Identifies the environment of the deployment at the time of this deployment status\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environmentUrl\",\"description\":\"Identifies the environment URL of the deployment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DeploymentStatus object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"logUrl\",\"description\":\"Identifies the log URL of the deployment.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the current state of the deployment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DeploymentStatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatusConnection\",\"description\":\"The connection type for DeploymentStatus.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatusEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatusEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DeploymentStatusState\",\"description\":\"The possible states for a deployment status.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PENDING\",\"description\":\"The deployment is pending.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"The deployment was successful.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"The deployment has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INACTIVE\",\"description\":\"The deployment is inactive.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ERROR\",\"description\":\"The deployment experienced an error.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The deployment is queued\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The deployment is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAITING\",\"description\":\"The deployment is waiting.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DequeuePullRequestInput\",\"description\":\"Autogenerated input type of DequeuePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the pull request to be dequeued.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DequeuePullRequestPayload\",\"description\":\"Autogenerated return type of DequeuePullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueueEntry\",\"description\":\"The merge queue entry of the dequeued pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"description\":\"The possible sides of a diff.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LEFT\",\"description\":\"The left side of the diff.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RIGHT\",\"description\":\"The right side of the diff.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DisablePullRequestAutoMergeInput\",\"description\":\"Autogenerated input type of DisablePullRequestAutoMerge\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to disable auto merge on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DisablePullRequestAutoMergePayload\",\"description\":\"Autogenerated return type of DisablePullRequestAutoMerge.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request auto merge was disabled on.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DisconnectedEvent\",\"description\":\"Represents a 'disconnected' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DisconnectedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Reference originated in a different repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"Issue or pull request from which the issue was disconnected.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Issue or pull request which was disconnected.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"description\":\"A discussion in a repository.\",\"fields\":[{\"name\":\"activeLockReason\",\"description\":\"Reason that the conversation was locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"answer\",\"description\":\"The comment chosen as this discussion's answer, if any.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"answerChosenAt\",\"description\":\"The time when a user chose this discussion's answer, if answered.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"answerChosenBy\",\"description\":\"The user who chose this discussion's answer, if answered.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"author\",\"description\":\"The actor who authored the discussion.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The main text of the discussion post.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"category\",\"description\":\"The category for this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closed\",\"description\":\"Indicates if the object is closed (definition of closed may depend on type)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comments\",\"description\":\"The replies to the discussion.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Discussion object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isAnswered\",\"description\":\"Only return answered/unanswered discussions\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"A list of labels associated with the object.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"locked\",\"description\":\"`true` if the object is locked\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"The number identifying this discussion within the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"poll\",\"description\":\"The poll associated with this discussion, if one exists.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPoll\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The path for this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stateReason\",\"description\":\"Identifies the reason for the discussion's state.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"DiscussionStateReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The title of this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"upvoteCount\",\"description\":\"Number of upvotes that this subject has received.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The URL for this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanLabel\",\"description\":\"Indicates if the viewer can edit labels for this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpvote\",\"description\":\"Whether or not the current user can add or remove an upvote on this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasUpvoted\",\"description\":\"Whether or not the current user has already upvoted this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Votable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"description\":\"A category for discussions in a repository.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"A description of this category.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emoji\",\"description\":\"An emoji representing this category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emojiHTML\",\"description\":\"This category's emoji rendered as HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DiscussionCategory object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isAnswerable\",\"description\":\"Whether or not discussions in this category support choosing an answer with the markDiscussionCommentAsAnswer mutation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of this category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The slug of this category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategoryConnection\",\"description\":\"The connection type for DiscussionCategory.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategoryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiscussionCloseReason\",\"description\":\"The possible reasons for closing a discussion.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RESOLVED\",\"description\":\"The discussion has been resolved\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OUTDATED\",\"description\":\"The discussion is no longer relevant\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DUPLICATE\",\"description\":\"The discussion is a duplicate of another\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"description\":\"A comment on a discussion.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedAt\",\"description\":\"The time when this replied-to comment was deleted\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion this comment was created in\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DiscussionComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isAnswer\",\"description\":\"Has this comment been chosen as the answer of its discussion?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"replies\",\"description\":\"The threaded replies to this comment.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"replyTo\",\"description\":\"The discussion comment this comment is a reply to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The path for this discussion comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"upvoteCount\",\"description\":\"Number of upvotes that this subject has received.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The URL for this discussion comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMarkAsAnswer\",\"description\":\"Can the current user mark this comment as an answer?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnmarkAsAnswer\",\"description\":\"Can the current user unmark this comment as an answer?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpvote\",\"description\":\"Whether or not the current user can add or remove an upvote on this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasUpvoted\",\"description\":\"Whether or not the current user has already upvoted this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Votable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"description\":\"The connection type for DiscussionComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionConnection\",\"description\":\"The connection type for Discussion.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionOrder\",\"description\":\"Ways in which lists of discussions can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order discussions.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order discussions by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiscussionOrderField\",\"description\":\"Properties by which discussion connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order discussions by creation time.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order discussions by most recent modification time.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPoll\",\"description\":\"A poll for a discussion.\",\"fields\":[{\"name\":\"discussion\",\"description\":\"The discussion that this poll belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DiscussionPoll object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"options\",\"description\":\"The options for this poll.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the options for the discussion poll.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionPollOptionOrder\",\"ofType\":null},\"defaultValue\":\"{field: AUTHORED_ORDER, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOptionConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"question\",\"description\":\"The question that is being asked by this poll.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalVoteCount\",\"description\":\"The total number of votes that have been cast for this poll.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanVote\",\"description\":\"Indicates if the viewer has permission to vote in this poll.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasVoted\",\"description\":\"Indicates if the viewer has voted for any option in this poll.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOption\",\"description\":\"An option for a discussion poll.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the DiscussionPollOption object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"option\",\"description\":\"The text for this option.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"poll\",\"description\":\"The discussion poll that this option belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPoll\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalVoteCount\",\"description\":\"The total number of votes that have been cast for this option.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasVoted\",\"description\":\"Indicates if the viewer has voted for this option in the poll.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOptionConnection\",\"description\":\"The connection type for DiscussionPollOption.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOptionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOption\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOptionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOption\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionPollOptionOrder\",\"description\":\"Ordering options for discussion poll option connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order poll options by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionPollOptionOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiscussionPollOptionOrderField\",\"description\":\"Properties by which discussion poll option connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"AUTHORED_ORDER\",\"description\":\"Order poll options by the order that the poll author specified when creating the poll.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VOTE_COUNT\",\"description\":\"Order poll options by the number of votes it has.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiscussionState\",\"description\":\"The possible states of a discussion.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"A discussion that is open\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"A discussion that has been closed\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DiscussionStateReason\",\"description\":\"The possible state reasons of a discussion.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RESOLVED\",\"description\":\"The discussion has been resolved\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OUTDATED\",\"description\":\"The discussion is no longer relevant\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DUPLICATE\",\"description\":\"The discussion is a duplicate of another\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REOPENED\",\"description\":\"The discussion was reopened\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DismissPullRequestReviewInput\",\"description\":\"Autogenerated input type of DismissPullRequestReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the pull request review to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"message\",\"description\":\"The contents of the pull request review dismissal message.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DismissPullRequestReviewPayload\",\"description\":\"Autogenerated return type of DismissPullRequestReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The dismissed pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"DismissReason\",\"description\":\"The possible reasons that a Dependabot alert was dismissed.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"FIX_STARTED\",\"description\":\"A fix has already been started\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_BANDWIDTH\",\"description\":\"No bandwidth to fix this\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TOLERABLE_RISK\",\"description\":\"Risk is tolerable to this project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INACCURATE\",\"description\":\"This alert is inaccurate or incorrect\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOT_USED\",\"description\":\"Vulnerable code is not actually used\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DismissRepositoryVulnerabilityAlertInput\",\"description\":\"Autogenerated input type of DismissRepositoryVulnerabilityAlert\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryVulnerabilityAlertId\",\"description\":\"The Dependabot alert ID to dismiss.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"dismissReason\",\"description\":\"The reason the Dependabot alert is being dismissed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DismissReason\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DismissRepositoryVulnerabilityAlertPayload\",\"description\":\"Autogenerated return type of DismissRepositoryVulnerabilityAlert.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryVulnerabilityAlert\",\"description\":\"The Dependabot alert that was dismissed\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"DraftIssue\",\"description\":\"A draft issue within a project.\",\"fields\":[{\"name\":\"assignees\",\"description\":\"A list of users to assigned to this draft issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The body of the draft issue.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body of the draft issue rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body of the draft issue rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created this draft issue.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the DraftIssue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Items\",\"description\":\"List of items linked with the draft issue (currently draft issue can be linked to only one item).\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"Projects that link to this draft issue (currently draft issue can be linked to only one project).\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The title of the draft issue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DraftPullRequestReviewComment\",\"description\":\"Specifies a review comment to be left with a Pull Request Review.\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"Path to the file being commented on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"position\",\"description\":\"Position in the file to leave a comment on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"Body of the comment to leave.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"DraftPullRequestReviewThread\",\"description\":\"Specifies a review comment thread to be left with a Pull Request Review.\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"Path to the file being commented on. Required if not using positioning.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"line\",\"description\":\"The line of the blob to which the thread refers. The end of the line range for multi-line comments. Required if not using positioning.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"side\",\"description\":\"The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"defaultValue\":\"RIGHT\"},{\"name\":\"startLine\",\"description\":\"The first line of the range to which the comment refers.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"startSide\",\"description\":\"The side of the diff on which the start line resides.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"defaultValue\":\"RIGHT\"},{\"name\":\"body\",\"description\":\"Body of the comment to leave.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EPSS\",\"description\":\"The Exploit Prediction Scoring System\",\"fields\":[{\"name\":\"percentage\",\"description\":\"The EPSS percentage represents the likelihood of a CVE being exploited.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"percentile\",\"description\":\"The EPSS percentile represents the relative rank of the CVE's likelihood of being exploited compared to other CVEs.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnablePullRequestAutoMergeInput\",\"description\":\"Autogenerated input type of EnablePullRequestAutoMerge\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to enable auto-merge on.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"commitHeadline\",\"description\":\"Commit headline to use for the commit when the PR is mergable; if omitted, a default message will be used. NOTE: when merging with a merge queue any input value for commit headline is ignored.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commitBody\",\"description\":\"Commit body to use for the commit when the PR is mergable; if omitted, a default message will be used. NOTE: when merging with a merge queue any input value for commit message is ignored.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"mergeMethod\",\"description\":\"The merge method to use. If omitted, defaults to `MERGE`. NOTE: when merging with a merge queue any input value for merge method is ignored.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null},\"defaultValue\":\"MERGE\"},{\"name\":\"authorEmail\",\"description\":\"The email address to associate with this merge.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"expectedHeadOid\",\"description\":\"The expected head OID of the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnablePullRequestAutoMergePayload\",\"description\":\"Autogenerated return type of EnablePullRequestAutoMerge.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request auto-merge was enabled on.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnqueuePullRequestInput\",\"description\":\"Autogenerated input type of EnqueuePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The ID of the pull request to enqueue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"jump\",\"description\":\"Add the pull request to the front of the queue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"expectedHeadOid\",\"description\":\"The expected head OID of the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnqueuePullRequestPayload\",\"description\":\"Autogenerated return type of EnqueuePullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueueEntry\",\"description\":\"The merge queue entry for the enqueued pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"description\":\"An account to manage multiple organizations with consolidated policy and billing.\",\"fields\":[{\"name\":\"announcementBanner\",\"description\":\"The announcement banner set on this enterprise, if any. Only visible to members of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AnnouncementBanner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the enterprise's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"billingEmail\",\"description\":\"The enterprise's billing email.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"billingInfo\",\"description\":\"Enterprise billing information visible to enterprise billing managers.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseBillingInfo\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The description of the enterprise as HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Enterprise object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"location\",\"description\":\"The location of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"members\",\"description\":\"A list of users who are members of this enterprise.\",\"args\":[{\"name\":\"organizationLogins\",\"description\":\"Only return members within the organizations with these logins\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for members returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"role\",\"description\":\"The role of the user in the enterprise organization or server.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"deployment\",\"description\":\"Only return members within the selected GitHub Enterprise deployment\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserDeployment\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasTwoFactorEnabled\",\"description\":\"Only return members with this two-factor authentication status. Does not include members who only have an account on a GitHub Enterprise Server instance.\\n\\n**Upcoming Change on 2025-04-01 UTC**\\n**Description:** `hasTwoFactorEnabled` will be removed. Use `two_factor_method_security` instead.\\n**Reason:** `has_two_factor_enabled` will be removed.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"twoFactorMethodSecurity\",\"description\":\"Only return members with this type of two-factor authentication method. Does not include members who only have an account on a GitHub Enterprise Server instance.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TwoFactorCredentialSecurityType\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizations\",\"description\":\"A list of organizations that belong to this enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"viewerOrganizationRole\",\"description\":\"The viewer's role in an organization.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RoleInOrganization\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ownerInfo\",\"description\":\"Enterprise information visible to enterprise owners or enterprise owners' personal access tokens (classic) with read:enterprise or admin:enterprise scope.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOwnerInfo\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"readme\",\"description\":\"The raw content of the enterprise README.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"readmeHTML\",\"description\":\"The content of the enterprise README as HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ruleset\",\"description\":\"Returns a single ruleset from the current enterprise by ID.\",\"args\":[{\"name\":\"databaseId\",\"description\":\"The ID of the ruleset to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rulesets\",\"description\":\"A list of rulesets for this enterprise.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityContactEmail\",\"description\":\"The enterprise's security contact email address.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The URL-friendly identifier for the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userNamespaceRepositories\",\"description\":\"A list of repositories that belong to users. Only available for enterprises with Enterprise Managed Users.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsAdmin\",\"description\":\"Is the current viewer an admin of this enterprise?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"websiteUrl\",\"description\":\"The URL of the enterprise website.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorEdge\",\"description\":\"A User who is an administrator of an enterprise.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The role of the administrator.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"description\":\"An invitation for a user to become an owner or billing manager of an enterprise.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The email of the person who was invited to the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise the invitation is for.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseAdministratorInvitation object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitee\",\"description\":\"The user who was invited to the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inviter\",\"description\":\"The user who created the invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The invitee's pending role in the enterprise (owner or billing_manager).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitationConnection\",\"description\":\"The connection type for EnterpriseAdministratorInvitation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseAdministratorInvitationOrder\",\"description\":\"Ordering options for enterprise administrator invitation connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order enterprise administrator invitations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorInvitationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorInvitationOrderField\",\"description\":\"Properties by which enterprise administrator invitation connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order enterprise administrator member invitations by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"description\":\"The possible administrator roles in an enterprise account.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OWNER\",\"description\":\"Represents an owner of the enterprise account.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING_MANAGER\",\"description\":\"Represents a billing manager of the enterprise account.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNAFFILIATED\",\"description\":\"Unaffiliated member of the enterprise account without an admin role.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseAllowPrivateRepositoryForkingPolicyValue\",\"description\":\"The possible values for the enterprise allow private repository forking policy value.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENTERPRISE_ORGANIZATIONS\",\"description\":\"Members can fork a repository to an organization within this enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAME_ORGANIZATION\",\"description\":\"Members can fork a repository only within the same organization (intra-org).\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAME_ORGANIZATION_USER_ACCOUNTS\",\"description\":\"Members can fork a repository to their user account or within the same organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ENTERPRISE_ORGANIZATIONS_USER_ACCOUNTS\",\"description\":\"Members can fork a repository to their enterprise-managed user account or an organization inside this enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER_ACCOUNTS\",\"description\":\"Members can fork a repository to their user account.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EVERYWHERE\",\"description\":\"Members can fork a repository to their user account or an organization, either inside or outside of this enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"description\":\"Metadata for an audit entry containing enterprise account information.\",\"fields\":[{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseBillingInfo\",\"description\":\"Enterprise billing information visible to enterprise billing managers and owners.\",\"fields\":[{\"name\":\"allLicensableUsersCount\",\"description\":\"The number of licenseable users/emails across the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assetPacks\",\"description\":\"The number of data packs used by all organizations owned by the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bandwidthQuota\",\"description\":\"The bandwidth quota in GB for all organizations owned by the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bandwidthUsage\",\"description\":\"The bandwidth usage in GB for all organizations owned by the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bandwidthUsagePercentage\",\"description\":\"The bandwidth usage as a percentage of the bandwidth quota.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"storageQuota\",\"description\":\"The storage quota in GB for all organizations owned by the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"storageUsage\",\"description\":\"The storage usage in GB for all organizations owned by the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"storageUsagePercentage\",\"description\":\"The storage usage as a percentage of the storage quota.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalAvailableLicenses\",\"description\":\"The number of available licenses across all owned organizations based on the unique number of billable users.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalLicenses\",\"description\":\"The total number of licenses allocated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseConnection\",\"description\":\"The connection type for Enterprise.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseDefaultRepositoryPermissionSettingValue\",\"description\":\"The possible values for the enterprise base repository permission setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NO_POLICY\",\"description\":\"Organizations in the enterprise choose base repository permissions for their members.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Organization members will be able to clone, pull, push, and add new collaborators to all organization repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITE\",\"description\":\"Organization members will be able to clone, pull, and push all organization repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READ\",\"description\":\"Organization members will be able to clone and pull all organization repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"Organization members will only be able to clone and pull public repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseDisallowedMethodsSettingValue\",\"description\":\"The possible values for an enabled/no policy enterprise setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INSECURE\",\"description\":\"The setting prevents insecure 2FA methods from being used by members of the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_POLICY\",\"description\":\"There is no policy set for preventing insecure 2FA methods from being used by members of the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"description\":\"The possible values for an enabled/disabled enterprise setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The setting is disabled for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_POLICY\",\"description\":\"There is no policy set for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledSettingValue\",\"description\":\"The possible values for an enabled/no policy enterprise setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_POLICY\",\"description\":\"There is no policy set for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseFailedInvitationConnection\",\"description\":\"The connection type for OrganizationInvitation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseFailedInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalUniqueUserCount\",\"description\":\"Identifies the total count of unique users in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseFailedInvitationEdge\",\"description\":\"A failed invitation to be a member in an enterprise organization.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"description\":\"An identity provider configured to provision identities for an enterprise. Visible to enterprise owners or enterprise owners' personal access tokens (classic) with read:enterprise or admin:enterprise scope.\",\"fields\":[{\"name\":\"digestMethod\",\"description\":\"The digest algorithm used to sign SAML requests for the identity provider.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SamlDigestAlgorithm\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise this identity provider belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"externalIdentities\",\"description\":\"ExternalIdentities provisioned by this identity provider.\",\"args\":[{\"name\":\"membersOnly\",\"description\":\"Filter to external identities with valid org membership only\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"Filter to external identities with the users login\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userName\",\"description\":\"Filter to external identities with the users userName/NameID attribute\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseIdentityProvider object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"idpCertificate\",\"description\":\"The x509 certificate used by the identity provider to sign assertions and responses.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"X509Certificate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issuer\",\"description\":\"The Issuer Entity ID for the SAML identity provider.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"recoveryCodes\",\"description\":\"Recovery codes that can be used by admins to access the enterprise if the identity provider is unavailable.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signatureMethod\",\"description\":\"The signature algorithm used to sign SAML requests for the identity provider.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SamlSignatureAlgorithm\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ssoUrl\",\"description\":\"The URL endpoint for the identity provider's SAML SSO.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"EnterpriseMember\",\"description\":\"An object that is a member of an enterprise.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"EnterpriseUserAccount\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberConnection\",\"description\":\"The connection type for EnterpriseMember.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"EnterpriseMember\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberEdge\",\"description\":\"A User who is a member of an enterprise through one or more organizations.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"EnterpriseMember\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"description\":\"An invitation for a user to become an unaffiliated member of an enterprise.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The email of the person who was invited to the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise the invitation is for.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseMemberInvitation object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitee\",\"description\":\"The user who was invited to the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inviter\",\"description\":\"The user who created the invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitationConnection\",\"description\":\"The connection type for EnterpriseMemberInvitation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberInvitationOrder\",\"description\":\"Ordering options for enterprise administrator invitation connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order enterprise member invitations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMemberInvitationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseMemberInvitationOrderField\",\"description\":\"Properties by which enterprise member invitation connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order enterprise member invitations by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberOrder\",\"description\":\"Ordering options for enterprise member connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order enterprise members by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMemberOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseMemberOrderField\",\"description\":\"Properties by which enterprise member connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order enterprise members by login\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order enterprise members by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanCreateRepositoriesSettingValue\",\"description\":\"The possible values for the enterprise members can create repositories setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NO_POLICY\",\"description\":\"Organization owners choose whether to allow members to create repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALL\",\"description\":\"Members will be able to create public and private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"Members will be able to create only public repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"Members will be able to create only private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"Members will not be able to create public or private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanMakePurchasesSettingValue\",\"description\":\"The possible values for the members can make purchases setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The setting is disabled for organizations in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembershipType\",\"description\":\"The possible values we have for filtering Platform::Objects::User#enterprises.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALL\",\"description\":\"Returns all enterprises in which the user is a member, admin, or billing manager.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Returns all enterprises in which the user is an admin.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING_MANAGER\",\"description\":\"Returns all enterprises in which the user is a billing manager.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORG_MEMBERSHIP\",\"description\":\"Returns all enterprises in which the user is a member of an org that is owned by the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseOrder\",\"description\":\"Ordering options for enterprises.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order enterprises by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseOrderField\",\"description\":\"Properties by which enterprise connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NAME\",\"description\":\"Order enterprises by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOrganizationMembershipConnection\",\"description\":\"The connection type for Organization.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOrganizationMembershipEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOrganizationMembershipEdge\",\"description\":\"An enterprise organization that a user is a member of.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The role of the user in the enterprise membership.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOutsideCollaboratorConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOutsideCollaboratorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOutsideCollaboratorEdge\",\"description\":\"A User who is an outside collaborator of an enterprise through one or more organizations.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"The enterprise organization repositories this user is a member of.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfoConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOwnerInfo\",\"description\":\"Enterprise information visible to enterprise owners or enterprise owners' personal access tokens (classic) with read:enterprise or admin:enterprise scope.\",\"fields\":[{\"name\":\"admins\",\"description\":\"A list of all of the administrators for this enterprise.\",\"args\":[{\"name\":\"organizationLogins\",\"description\":\"Only return members within the organizations with these logins\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The role to filter by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for administrators returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"hasTwoFactorEnabled\",\"description\":\"Only return administrators with this two-factor authentication status.\\n\\n**Upcoming Change on 2025-04-01 UTC**\\n**Description:** `hasTwoFactorEnabled` will be removed. Use `two_factor_method_security` instead.\\n**Reason:** `has_two_factor_enabled` will be removed.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"twoFactorMethodSecurity\",\"description\":\"Only return outside collaborators with this type of two-factor authentication method.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TwoFactorCredentialSecurityType\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"affiliatedUsersWithTwoFactorDisabled\",\"description\":\"A list of users in the enterprise who currently have two-factor authentication disabled.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"affiliatedUsersWithTwoFactorDisabledExist\",\"description\":\"Whether or not affiliated users with two-factor authentication disabled exist in the enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"allowPrivateRepositoryForkingSetting\",\"description\":\"The setting value for whether private repository forking is enabled for repositories in organizations in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"allowPrivateRepositoryForkingSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided private repository forking setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"allowPrivateRepositoryForkingSettingPolicyValue\",\"description\":\"The value for the allow private repository forking policy on the enterprise.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAllowPrivateRepositoryForkingPolicyValue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"defaultRepositoryPermissionSetting\",\"description\":\"The setting value for base repository permissions for organizations in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseDefaultRepositoryPermissionSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"defaultRepositoryPermissionSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided base repository permission.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The permission to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DefaultRepositoryPermissionField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domains\",\"description\":\"A list of domains owned by the enterprise. Visible to enterprise owners or enterprise owners' personal access tokens (classic) with admin:enterprise scope.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isVerified\",\"description\":\"Filter whether or not the domain is verified.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"isApproved\",\"description\":\"Filter whether or not the domain is approved.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for verifiable domains returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"VerifiableDomainOrder\",\"ofType\":null},\"defaultValue\":\"{field: DOMAIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomainConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseServerInstallations\",\"description\":\"Enterprise Server installations owned by the enterprise.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"connectedOnly\",\"description\":\"Whether or not to only return installations discovered via GitHub Connect.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for Enterprise Server installations returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerInstallationOrder\",\"ofType\":null},\"defaultValue\":\"{field: HOST_NAME, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"failedInvitations\",\"description\":\"A list of failed invitations in the enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseFailedInvitationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEnabledSetting\",\"description\":\"The setting value for whether the enterprise has an IP allow list enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListEnabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntries\",\"description\":\"The IP addresses that are allowed to access resources owned by the enterprise. Visible to enterprise owners or enterprise owners' personal access tokens (classic) with admin:enterprise scope.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for IP allow list entries returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IpAllowListEntryOrder\",\"ofType\":null},\"defaultValue\":\"{field: ALLOW_LIST_VALUE, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListForInstalledAppsEnabledSetting\",\"description\":\"The setting value for whether the enterprise has IP allow list configuration for installed GitHub Apps enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListForInstalledAppsEnabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUpdatingDefaultRepositoryPermission\",\"description\":\"Whether or not the base repository permission is currently being updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUpdatingTwoFactorRequirement\",\"description\":\"Whether the two-factor authentication requirement is currently being enforced.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanChangeRepositoryVisibilitySetting\",\"description\":\"The setting value for whether organization members with admin permissions on a repository can change repository visibility.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanChangeRepositoryVisibilitySettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided can change repository visibility setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanCreateInternalRepositoriesSetting\",\"description\":\"The setting value for whether members of organizations in the enterprise can create internal repositories.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanCreatePrivateRepositoriesSetting\",\"description\":\"The setting value for whether members of organizations in the enterprise can create private repositories.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanCreatePublicRepositoriesSetting\",\"description\":\"The setting value for whether members of organizations in the enterprise can create public repositories.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanCreateRepositoriesSetting\",\"description\":\"The setting value for whether members of organizations in the enterprise can create repositories.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanCreateRepositoriesSettingValue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanCreateRepositoriesSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided repository creation setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationMembersCanCreateRepositoriesSettingValue\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanDeleteIssuesSetting\",\"description\":\"The setting value for whether members with admin permissions for repositories can delete issues.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanDeleteIssuesSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided members can delete issues setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanDeleteRepositoriesSetting\",\"description\":\"The setting value for whether members with admin permissions for repositories can delete or transfer repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanDeleteRepositoriesSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided members can delete repositories setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanInviteCollaboratorsSetting\",\"description\":\"The setting value for whether members of organizations in the enterprise can invite outside collaborators.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanInviteCollaboratorsSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided members can invite collaborators setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanMakePurchasesSetting\",\"description\":\"Indicates whether members of this enterprise's organizations can purchase additional services for those organizations.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanMakePurchasesSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanUpdateProtectedBranchesSetting\",\"description\":\"The setting value for whether members with admin permissions for repositories can update protected branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanUpdateProtectedBranchesSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided members can update protected branches setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanViewDependencyInsightsSetting\",\"description\":\"The setting value for whether members can view dependency insights.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanViewDependencyInsightsSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided members can view dependency insights setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationDeliveryRestrictionEnabledSetting\",\"description\":\"Indicates if email notification delivery for this enterprise is restricted to verified or approved domains.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationRestrictionSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oidcProvider\",\"description\":\"The OIDC Identity Provider for the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OIDCProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationProjectsSetting\",\"description\":\"The setting value for whether organization projects are enabled for organizations in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationProjectsSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided organization projects setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"outsideCollaborators\",\"description\":\"A list of outside collaborators across the repositories in the enterprise.\",\"args\":[{\"name\":\"login\",\"description\":\"The login of one specific outside collaborator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for outside collaborators returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"visibility\",\"description\":\"Only return outside collaborators on repositories with this visibility.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasTwoFactorEnabled\",\"description\":\"Only return outside collaborators with this two-factor authentication status.\\n\\n**Upcoming Change on 2025-04-01 UTC**\\n**Description:** `hasTwoFactorEnabled` will be removed. Use `two_factor_method_security` instead.\\n**Reason:** `has_two_factor_enabled` will be removed.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"twoFactorMethodSecurity\",\"description\":\"Only return outside collaborators with this type of two-factor authentication method.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TwoFactorCredentialSecurityType\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"organizationLogins\",\"description\":\"Only return outside collaborators within the organizations with these logins\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOutsideCollaboratorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingAdminInvitations\",\"description\":\"A list of pending administrator invitations for the enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pending enterprise administrator invitations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseAdministratorInvitationOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"role\",\"description\":\"The role to filter by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingCollaboratorInvitations\",\"description\":\"A list of pending collaborator invitations across the repositories in the enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pending repository collaborator invitations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryInvitationOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingMemberInvitations\",\"description\":\"A list of pending member invitations for organizations in the enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationLogins\",\"description\":\"Only return invitations within the organizations with these logins\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"invitationSource\",\"description\":\"Only return invitations matching this invitation source\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationSource\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterprisePendingMemberInvitationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingUnaffiliatedMemberInvitations\",\"description\":\"A list of pending unaffiliated member invitations for the enterprise.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pending enterprise member invitations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberInvitationOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDeployKeySetting\",\"description\":\"The setting value for whether deploy keys are enabled for repositories in organizations in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDeployKeySettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided deploy keys setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryProjectsSetting\",\"description\":\"The setting value for whether repository projects are enabled in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryProjectsSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided repository projects setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"samlIdentityProvider\",\"description\":\"The SAML Identity Provider for the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"samlIdentityProviderSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the SAML single sign-on setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IdentityProviderConfigurationState\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"supportEntitlements\",\"description\":\"A list of members with a support entitlement.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for support entitlement users returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseMemberOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussionsSetting\",\"description\":\"The setting value for whether team discussions are enabled for organizations in this enterprise.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussionsSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the provided team discussions setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"twoFactorDisallowedMethodsSetting\",\"description\":\"The setting value for what methods of two-factor authentication the enterprise prevents its users from having.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseDisallowedMethodsSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"twoFactorRequiredSetting\",\"description\":\"The setting value for whether the enterprise requires two-factor authentication for its organizations and users.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"twoFactorRequiredSettingOrganizations\",\"description\":\"A list of enterprise organizations configured with the two-factor authentication setting value.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The setting value to find organizations for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations with this setting.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterprisePendingMemberInvitationConnection\",\"description\":\"The connection type for OrganizationInvitation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterprisePendingMemberInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalUniqueUserCount\",\"description\":\"Identifies the total count of unique users in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterprisePendingMemberInvitationEdge\",\"description\":\"An invitation to be a member in an enterprise organization.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfo\",\"description\":\"A subset of repository information queryable from an enterprise.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseRepositoryInfo object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrivate\",\"description\":\"Identifies if the repository is private or internal.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The repository's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameWithOwner\",\"description\":\"The repository's name with owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfoConnection\",\"description\":\"The connection type for EnterpriseRepositoryInfo.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfoEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfoEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfo\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"description\":\"An Enterprise Server installation.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"customerName\",\"description\":\"The customer name to which the Enterprise Server installation belongs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hostName\",\"description\":\"The host name of the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseServerInstallation object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isConnected\",\"description\":\"Whether or not the installation is connected to an Enterprise Server installation via GitHub Connect.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userAccounts\",\"description\":\"User accounts on this Enterprise Server installation.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for Enterprise Server user accounts returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userAccountsUploads\",\"description\":\"User accounts uploads for the Enterprise Server installation.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for Enterprise Server user accounts uploads returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationConnection\",\"description\":\"The connection type for EnterpriseServerInstallation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationMembershipConnection\",\"description\":\"The connection type for EnterpriseServerInstallation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationMembershipEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationMembershipEdge\",\"description\":\"An Enterprise Server installation that a user is a member of.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The role of the user in the enterprise membership.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerInstallationOrder\",\"description\":\"Ordering options for Enterprise Server installation connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order Enterprise Server installations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerInstallationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerInstallationOrderField\",\"description\":\"Properties by which Enterprise Server installation connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"HOST_NAME\",\"description\":\"Order Enterprise Server installations by host name\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CUSTOMER_NAME\",\"description\":\"Order Enterprise Server installations by customer name\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order Enterprise Server installations by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccount\",\"description\":\"A user account on an Enterprise Server installation.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emails\",\"description\":\"User emails belonging to this user account.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for Enterprise Server user account emails returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailOrder\",\"ofType\":null},\"defaultValue\":\"{field: EMAIL, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseServerInstallation\",\"description\":\"The Enterprise Server installation on which this user account exists.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseServerUserAccount object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSiteAdmin\",\"description\":\"Whether the user account is a site administrator on the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The login of the user account on the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"profileName\",\"description\":\"The profile name of the user account on the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"remoteCreatedAt\",\"description\":\"The date and time when the user account was created on the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"remoteUserId\",\"description\":\"The ID of the user account on the Enterprise Server installation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountConnection\",\"description\":\"The connection type for EnterpriseServerUserAccount.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccount\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccount\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmail\",\"description\":\"An email belonging to a user account on an Enterprise Server installation.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The email address.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseServerUserAccountEmail object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrimary\",\"description\":\"Indicates whether this is the primary email of the associated user account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userAccount\",\"description\":\"The user account to which the email belongs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccount\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailConnection\",\"description\":\"The connection type for EnterpriseServerUserAccountEmail.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmail\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmail\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountEmailOrder\",\"description\":\"Ordering options for Enterprise Server user account email connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order emails by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountEmailOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountEmailOrderField\",\"description\":\"Properties by which Enterprise Server user account email connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"EMAIL\",\"description\":\"Order emails by email\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountOrder\",\"description\":\"Ordering options for Enterprise Server user account connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order user accounts by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountOrderField\",\"description\":\"Properties by which Enterprise Server user account connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order user accounts by login\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOTE_CREATED_AT\",\"description\":\"Order user accounts by creation time on the Enterprise Server installation\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUpload\",\"description\":\"A user accounts upload from an Enterprise Server installation.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise to which this upload belongs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseServerInstallation\",\"description\":\"The Enterprise Server installation for which this upload was generated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseServerUserAccountsUpload object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the file uploaded.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"syncState\",\"description\":\"The synchronization state of the upload\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountsUploadSyncState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadConnection\",\"description\":\"The connection type for EnterpriseServerUserAccountsUpload.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUpload\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUpload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerUserAccountsUploadOrder\",\"description\":\"Ordering options for Enterprise Server user accounts upload connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order user accounts uploads by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountsUploadOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountsUploadOrderField\",\"description\":\"Properties by which Enterprise Server user accounts upload connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order user accounts uploads by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseServerUserAccountsUploadSyncState\",\"description\":\"Synchronization state of the Enterprise Server user accounts upload\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PENDING\",\"description\":\"The synchronization of the upload is pending.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"The synchronization of the upload succeeded.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"The synchronization of the upload failed.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseUserAccount\",\"description\":\"An account for a user who is an admin of an enterprise or a member of an enterprise through one or more organizations.\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the enterprise user account's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise in which this user account exists.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseInstallations\",\"description\":\"A list of Enterprise Server installations this user is a member of.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for installations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseServerInstallationOrder\",\"ofType\":null},\"defaultValue\":\"{field: HOST_NAME, direction: ASC}\"},{\"name\":\"role\",\"description\":\"The role of the user in the installation.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallationMembershipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the EnterpriseUserAccount object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"An identifier for the enterprise user account, a login or email address\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the enterprise user account\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizations\",\"description\":\"A list of enterprise organizations this user is a member of.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"role\",\"description\":\"The role of the user in the enterprise organization.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseOrganizationMembershipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user within the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserAccountMembershipRole\",\"description\":\"The possible roles for enterprise membership.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MEMBER\",\"description\":\"The user is a member of an organization in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OWNER\",\"description\":\"The user is an owner of an organization in the enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNAFFILIATED\",\"description\":\"The user is not an owner of the enterprise, and not a member or owner of any organizations in the enterprise; only for EMU-enabled enterprises.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnterpriseUserDeployment\",\"description\":\"The possible GitHub Enterprise deployments where this user can exist.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CLOUD\",\"description\":\"The user is part of a GitHub Enterprise Cloud deployment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SERVER\",\"description\":\"The user is part of a GitHub Enterprise Server deployment.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"description\":\"An environment.\",\"fields\":[{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Environment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPinned\",\"description\":\"Indicates whether or not this environment is currently pinned to the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestCompletedDeployment\",\"description\":\"The latest completed deployment with status success, failure, or error if it exists\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the environment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedPosition\",\"description\":\"The position of the environment if it is pinned, null if it is not pinned\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"protectionRules\",\"description\":\"The protection rules defined for this environment\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentProtectionRuleConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnvironmentConnection\",\"description\":\"The connection type for Environment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnvironmentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"EnvironmentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnvironmentOrderField\",\"description\":\"Properties by which environments connections can be ordered\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NAME\",\"description\":\"Order environments by name.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"EnvironmentPinnedFilterField\",\"description\":\"Properties by which environments connections can be ordered\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALL\",\"description\":\"All environments will be returned.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ONLY\",\"description\":\"Only pinned environment will be returned\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"Environments exclude pinned will be returned\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"Environments\",\"description\":\"Ordering options for environments\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order environments by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnvironmentOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order environments by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentity\",\"description\":\"An external identity provisioned by SAML SSO or SCIM. If SAML is configured on the organization, the external identity is visible to (1) organization owners, (2) organization owners' personal access tokens (classic) with read:org or admin:org scope, (3) GitHub App with an installation token with read or write access to members. If SAML is configured on the enterprise, the external identity is visible to (1) enterprise owners, (2) enterprise owners' personal access tokens (classic) with read:enterprise or admin:enterprise scope.\",\"fields\":[{\"name\":\"guid\",\"description\":\"The GUID for this identity\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ExternalIdentity object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationInvitation\",\"description\":\"Organization invitation for this SCIM-provisioned external identity\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"samlIdentity\",\"description\":\"SAML Identity attributes\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentitySamlAttributes\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"scimIdentity\",\"description\":\"SCIM Identity attributes\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityScimAttributes\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"User linked to this external identity. Will be NULL if this identity has not been claimed by an organization member.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityAttribute\",\"description\":\"An attribute for the External Identity attributes collection\",\"fields\":[{\"name\":\"metadata\",\"description\":\"The attribute metadata as JSON\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The attribute name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"value\",\"description\":\"The attribute value\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityConnection\",\"description\":\"The connection type for ExternalIdentity.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentity\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentity\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentitySamlAttributes\",\"description\":\"SAML attributes for the External Identity\",\"fields\":[{\"name\":\"attributes\",\"description\":\"SAML Identity attributes\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityAttribute\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emails\",\"description\":\"The emails associated with the SAML identity\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserEmailMetadata\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"familyName\",\"description\":\"Family name of the SAML identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"givenName\",\"description\":\"Given name of the SAML identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"groups\",\"description\":\"The groups linked to this identity in IDP\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameId\",\"description\":\"The NameID of the SAML identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"username\",\"description\":\"The userName of the SAML identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityScimAttributes\",\"description\":\"SCIM attributes for the External Identity\",\"fields\":[{\"name\":\"emails\",\"description\":\"The emails associated with the SCIM identity\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserEmailMetadata\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"familyName\",\"description\":\"Family name of the SCIM identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"givenName\",\"description\":\"Given name of the SCIM identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"groups\",\"description\":\"The groups linked to this identity in IDP\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"username\",\"description\":\"The userName of the SCIM identity\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileAddition\",\"description\":\"A command to add a file at the given path with the given contents as part of a commit.  Any existing file at that that path will be replaced.\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"The path in the repository where the file will be located\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"contents\",\"description\":\"The base64 encoded contents of the file\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileChanges\",\"description\":\"A description of a set of changes to a file tree to be made as part of\\na git commit, modeled as zero or more file `additions` and zero or more\\nfile `deletions`.\\n\\nBoth fields are optional; omitting both will produce a commit with no\\nfile changes.\\n\\n`deletions` and `additions` describe changes to files identified\\nby their path in the git tree using unix-style path separators, i.e.\\n`/`.  The root of a git tree is an empty string, so paths are not\\nslash-prefixed.\\n\\n`path` values must be unique across all `additions` and `deletions`\\nprovided.  Any duplication will result in a validation error.\\n\\n### Encoding\\n\\nFile contents must be provided in full for each `FileAddition`.\\n\\nThe `contents` of a `FileAddition` must be encoded using RFC 4648\\ncompliant base64, i.e. correct padding is required and no characters\\noutside the standard alphabet may be used.  Invalid base64\\nencoding will be rejected with a validation error.\\n\\nThe encoded contents may be binary.\\n\\nFor text files, no assumptions are made about the character encoding of\\nthe file contents (after base64 decoding).  No charset transcoding or\\nline-ending normalization will be performed; it is the client's\\nresponsibility to manage the character encoding of files they provide.\\nHowever, for maximum compatibility we recommend using UTF-8 encoding\\nand ensuring that all files in a repository use a consistent\\nline-ending convention (`\\\\n` or `\\\\r\\\\n`), and that all files end\\nwith a newline.\\n\\n### Modeling file changes\\n\\nEach of the the five types of conceptual changes that can be made in a\\ngit commit can be described using the `FileChanges` type as follows:\\n\\n1. New file addition: create file `hello world\\\\n` at path `docs/README.txt`:\\n\\n       {\\n         \\\"additions\\\" [\\n           {\\n             \\\"path\\\": \\\"docs/README.txt\\\",\\n             \\\"contents\\\": base64encode(\\\"hello world\\\\n\\\")\\n           }\\n         ]\\n       }\\n\\n2. Existing file modification: change existing `docs/README.txt` to have new\\n   content `new content here\\\\n`:\\n\\n       {\\n         \\\"additions\\\" [\\n           {\\n             \\\"path\\\": \\\"docs/README.txt\\\",\\n             \\\"contents\\\": base64encode(\\\"new content here\\\\n\\\")\\n           }\\n         ]\\n       }\\n\\n3. Existing file deletion: remove existing file `docs/README.txt`.\\n   Note that the path is required to exist -- specifying a\\n   path that does not exist on the given branch will abort the\\n   commit and return an error.\\n\\n       {\\n         \\\"deletions\\\" [\\n           {\\n             \\\"path\\\": \\\"docs/README.txt\\\"\\n           }\\n         ]\\n       }\\n\\n\\n4. File rename with no changes: rename `docs/README.txt` with\\n   previous content `hello world\\\\n` to the same content at\\n   `newdocs/README.txt`:\\n\\n       {\\n         \\\"deletions\\\" [\\n           {\\n             \\\"path\\\": \\\"docs/README.txt\\\",\\n           }\\n         ],\\n         \\\"additions\\\" [\\n           {\\n             \\\"path\\\": \\\"newdocs/README.txt\\\",\\n             \\\"contents\\\": base64encode(\\\"hello world\\\\n\\\")\\n           }\\n         ]\\n       }\\n\\n\\n5. File rename with changes: rename `docs/README.txt` with\\n   previous content `hello world\\\\n` to a file at path\\n   `newdocs/README.txt` with content `new contents\\\\n`:\\n\\n       {\\n         \\\"deletions\\\" [\\n           {\\n             \\\"path\\\": \\\"docs/README.txt\\\",\\n           }\\n         ],\\n         \\\"additions\\\" [\\n           {\\n             \\\"path\\\": \\\"newdocs/README.txt\\\",\\n             \\\"contents\\\": base64encode(\\\"new contents\\\\n\\\")\\n           }\\n         ]\\n       }\\n\",\"fields\":null,\"inputFields\":[{\"name\":\"deletions\",\"description\":\"Files to delete.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileDeletion\",\"ofType\":null}}},\"defaultValue\":\"[]\"},{\"name\":\"additions\",\"description\":\"File to add or change.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileAddition\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileDeletion\",\"description\":\"A command to delete the file at the given path as part of a commit.\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"The path to delete\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FileExtensionRestrictionParameters\",\"description\":\"Prevent commits that include files with specified file extensions from being pushed to the commit graph.\",\"fields\":[{\"name\":\"restrictedFileExtensions\",\"description\":\"The file extensions that are restricted from being pushed to the commit graph.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileExtensionRestrictionParametersInput\",\"description\":\"Prevent commits that include files with specified file extensions from being pushed to the commit graph.\",\"fields\":null,\"inputFields\":[{\"name\":\"restrictedFileExtensions\",\"description\":\"The file extensions that are restricted from being pushed to the commit graph.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FilePathRestrictionParameters\",\"description\":\"Prevent commits that include changes in specified file and folder paths from being pushed to the commit graph. This includes absolute paths that contain file names.\",\"fields\":[{\"name\":\"restrictedFilePaths\",\"description\":\"The file paths that are restricted from being pushed to the commit graph.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FilePathRestrictionParametersInput\",\"description\":\"Prevent commits that include changes in specified file and folder paths from being pushed to the commit graph. This includes absolute paths that contain file names.\",\"fields\":null,\"inputFields\":[{\"name\":\"restrictedFilePaths\",\"description\":\"The file paths that are restricted from being pushed to the commit graph.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"FileViewedState\",\"description\":\"The possible viewed states of a file .\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DISMISSED\",\"description\":\"The file has new changes since last viewed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VIEWED\",\"description\":\"The file has been marked as viewed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNVIEWED\",\"description\":\"The file has not been marked as viewed.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"Float\",\"description\":\"Represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FollowOrganizationInput\",\"description\":\"Autogenerated input type of FollowOrganization\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"ID of the organization to follow.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FollowOrganizationPayload\",\"description\":\"Autogenerated return type of FollowOrganization.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that was followed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"FollowUserInput\",\"description\":\"Autogenerated input type of FollowUser\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userId\",\"description\":\"ID of the user to follow.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FollowUserPayload\",\"description\":\"Autogenerated return type of FollowUser.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that was followed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FollowerConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FollowingConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"FundingLink\",\"description\":\"A funding platform link for a repository.\",\"fields\":[{\"name\":\"platform\",\"description\":\"The funding platform this link is for.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"FundingPlatform\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The configured URL for this funding link.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"FundingPlatform\",\"description\":\"The possible funding platforms for repository funding links.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GITHUB\",\"description\":\"GitHub funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PATREON\",\"description\":\"Patreon funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OPEN_COLLECTIVE\",\"description\":\"Open Collective funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KO_FI\",\"description\":\"Ko-fi funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TIDELIFT\",\"description\":\"Tidelift funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMUNITY_BRIDGE\",\"description\":\"Community Bridge funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LIBERAPAY\",\"description\":\"Liberapay funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUEHUNT\",\"description\":\"IssueHunt funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LFX_CROWDFUNDING\",\"description\":\"LFX Crowdfunding funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"POLAR\",\"description\":\"Polar funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BUY_ME_A_COFFEE\",\"description\":\"Buy Me a Coffee funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THANKS_DEV\",\"description\":\"thanks.dev funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CUSTOM\",\"description\":\"Custom funding platform.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GenericHovercardContext\",\"description\":\"A generic hovercard context with a message and icon\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"description\":\"A Gist.\",\"fields\":[{\"name\":\"comments\",\"description\":\"A list of comments associated with the gist\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The gist description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"files\",\"description\":\"The files in this gist.\",\"args\":[{\"name\":\"limit\",\"description\":\"The maximum number of files to return.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"10\"},{\"name\":\"oid\",\"description\":\"The oid of the files to return\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistFile\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"forks\",\"description\":\"A list of forks associated with the gist\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for gists returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"GistOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Gist object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isFork\",\"description\":\"Identifies if the gist is a fork.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPublic\",\"description\":\"Whether the gist is public or not.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The gist name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The gist owner.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pushedAt\",\"description\":\"Identifies when the gist was last pushed to.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTML path to this resource.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazerCount\",\"description\":\"Returns a count of how many stargazers there are on this object\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazers\",\"description\":\"A list of users who have starred this starrable.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StargazerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this Gist.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasStarred\",\"description\":\"Returns a boolean indicating whether the viewing user has starred this starrable.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"description\":\"Represents a comment on an Gist.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the gist.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"Identifies the comment body.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gist\",\"description\":\"The associated gist.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the GistComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistCommentConnection\",\"description\":\"The connection type for GistComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistConnection\",\"description\":\"The connection type for Gist.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GistFile\",\"description\":\"A file in a gist.\",\"fields\":[{\"name\":\"encodedName\",\"description\":\"The file name encoded to remove characters that are invalid in URL paths.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"encoding\",\"description\":\"The gist file encoding.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"extension\",\"description\":\"The file extension from the file name.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isImage\",\"description\":\"Indicates if this file is an image.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isTruncated\",\"description\":\"Whether the file's contents were truncated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"language\",\"description\":\"The programming language this file is written in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The gist file name.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"size\",\"description\":\"The gist file size in bytes.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"text\",\"description\":\"UTF8 text data or null if the file is binary\",\"args\":[{\"name\":\"truncate\",\"description\":\"Optionally truncate the returned file to this length.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"GistOrder\",\"description\":\"Ordering options for gist connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repositories by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GistOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"GistOrderField\",\"description\":\"Properties by which gist connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order gists by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order gists by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUSHED_AT\",\"description\":\"Order gists by push time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"GistPrivacy\",\"description\":\"The privacy of a Gist\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PUBLIC\",\"description\":\"Public\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SECRET\",\"description\":\"Secret\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALL\",\"description\":\"Gists that are public and secret\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"description\":\"Represents an actor in a Git commit (ie. an author or committer).\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the author's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"date\",\"description\":\"The timestamp of the Git action (authoring or committing).\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitTimestamp\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The email in the Git commit.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name in the Git commit.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The GitHub user corresponding to the email field. Null if no such user exists.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GitActorConnection\",\"description\":\"The connection type for GitActor.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GitActorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GitActorEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GitHubMetadata\",\"description\":\"Represents information about the GitHub instance.\",\"fields\":[{\"name\":\"gitHubServicesSha\",\"description\":\"Returns a String that's a SHA of `github-services`\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gitIpAddresses\",\"description\":\"IP addresses that users connect to for git operations\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"githubEnterpriseImporterIpAddresses\",\"description\":\"IP addresses that GitHub Enterprise Importer uses for outbound connections\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hookIpAddresses\",\"description\":\"IP addresses that service hooks are sent from\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"importerIpAddresses\",\"description\":\"IP addresses that the importer connects from\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPasswordAuthenticationVerifiable\",\"description\":\"Whether or not users are verified\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pagesIpAddresses\",\"description\":\"IP addresses for GitHub Pages' A records\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"description\":\"Represents a Git object.\",\"fields\":[{\"name\":\"abbreviatedOid\",\"description\":\"An abbreviated version of the Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitResourcePath\",\"description\":\"The HTTP path for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitUrl\",\"description\":\"The HTTP URL for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the GitObject object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"The Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the Git object belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Blob\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Tag\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Tree\",\"ofType\":null}]},{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"description\":\"A Git object ID.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"GitRefname\",\"description\":\"A fully qualified reference name (e.g. `refs/heads/master`).\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"GitSSHRemote\",\"description\":\"Git SSH string\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"description\":\"Information about a signature (GPG or S/MIME) on a Commit or Tag.\",\"fields\":[{\"name\":\"email\",\"description\":\"Email used to sign this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isValid\",\"description\":\"True if the signature is valid and verified by GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Payload for GPG signing object. Raw ODB object without the signature header.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"ASCII-armored signature header from object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signer\",\"description\":\"GitHub user corresponding to the email signing this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifiedAt\",\"description\":\"The date the signature was verified, if valid\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasSignedByGitHub\",\"description\":\"True if the signature was made with GitHub's signing key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"GpgSignature\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SmimeSignature\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SshSignature\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnknownSignature\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"description\":\"The state of a Git signature.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"VALID\",\"description\":\"Valid signature and verified by GitHub\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INVALID\",\"description\":\"Invalid signature\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MALFORMED_SIG\",\"description\":\"Malformed signature\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNKNOWN_KEY\",\"description\":\"Key used for signing not known to GitHub\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BAD_EMAIL\",\"description\":\"Invalid email used for signing\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNVERIFIED_EMAIL\",\"description\":\"Email used for signing unverified on GitHub\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_USER\",\"description\":\"Email used for signing not known to GitHub\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNKNOWN_SIG_TYPE\",\"description\":\"Unknown signature type\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNSIGNED\",\"description\":\"Unsigned\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GPGVERIFY_UNAVAILABLE\",\"description\":\"Internal error - the GPG verification service is unavailable at the moment\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GPGVERIFY_ERROR\",\"description\":\"Internal error - the GPG verification service misbehaved\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOT_SIGNING_KEY\",\"description\":\"The usage flags for the key that signed this don't allow signing\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EXPIRED_KEY\",\"description\":\"Signing key expired\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OCSP_PENDING\",\"description\":\"Valid signature, pending certificate revocation checking\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OCSP_ERROR\",\"description\":\"Valid signature, though certificate revocation check failed\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BAD_CERT\",\"description\":\"The signing certificate or its chain could not be verified\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OCSP_REVOKED\",\"description\":\"One or more certificates in chain has been revoked\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"GitTimestamp\",\"description\":\"An ISO-8601 encoded date string. Unlike the DateTime type, GitTimestamp is not converted in UTC.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GpgSignature\",\"description\":\"Represents a GPG signature on a Commit or Tag.\",\"fields\":[{\"name\":\"email\",\"description\":\"Email used to sign this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isValid\",\"description\":\"True if the signature is valid and verified by GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"keyId\",\"description\":\"Hex-encoded ID of the key that signed this object.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Payload for GPG signing object. Raw ODB object without the signature header.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"ASCII-armored signature header from object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signer\",\"description\":\"GitHub user corresponding to the email signing this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifiedAt\",\"description\":\"The date the signature was verified, if valid\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasSignedByGitHub\",\"description\":\"True if the signature was made with GitHub's signing key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"GrantEnterpriseOrganizationsMigratorRoleInput\",\"description\":\"Autogenerated input type of GrantEnterpriseOrganizationsMigratorRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise to which all organizations managed by it will be granted the migrator role.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of the user to grant the migrator role\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GrantEnterpriseOrganizationsMigratorRolePayload\",\"description\":\"Autogenerated return type of GrantEnterpriseOrganizationsMigratorRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizations\",\"description\":\"The organizations that had the migrator role applied to for the given user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"GrantMigratorRoleInput\",\"description\":\"Autogenerated input type of GrantMigratorRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization that the user/team belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"actor\",\"description\":\"The user login or Team slug to grant the migrator role.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"actorType\",\"description\":\"Specifies the type of the actor, can be either USER or TEAM.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ActorType\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"GrantMigratorRolePayload\",\"description\":\"Autogenerated return type of GrantMigratorRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"description\":\"A string containing HTML code.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefDeletedEvent\",\"description\":\"Represents a 'head_ref_deleted' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRef\",\"description\":\"Identifies the Ref associated with the `head_ref_deleted` event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRefName\",\"description\":\"Identifies the name of the Ref associated with the `head_ref_deleted` event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the HeadRefDeletedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefForcePushedEvent\",\"description\":\"Represents a 'head_ref_force_pushed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"afterCommit\",\"description\":\"Identifies the after commit SHA for the 'head_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"beforeCommit\",\"description\":\"Identifies the before commit SHA for the 'head_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the HeadRefForcePushedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"Identifies the fully qualified ref name for the 'head_ref_force_pushed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefRestoredEvent\",\"description\":\"Represents a 'head_ref_restored' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the HeadRefRestoredEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Hovercard\",\"description\":\"Detail needed to display a hovercard for a user\",\"fields\":[{\"name\":\"contexts\",\"description\":\"Each of the contexts for this hovercard\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"description\":\"An individual line of a hovercard\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"GenericHovercardContext\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationTeamsHovercardContext\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationsHovercardContext\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewStatusHovercardContext\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ViewerHovercardContext\",\"ofType\":null}]},{\"kind\":\"SCALAR\",\"name\":\"ID\",\"description\":\"Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\\\"VXNlci0xMA==\\\"`) or integer (such as `4`) input value will be accepted as an ID.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IdentityProviderConfigurationState\",\"description\":\"The possible states in which authentication can be configured with an identity provider.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENFORCED\",\"description\":\"Authentication with an identity provider is configured and enforced.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONFIGURED\",\"description\":\"Authentication with an identity provider is configured but not enforced.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNCONFIGURED\",\"description\":\"Authentication with an identity provider is not configured.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ImportProjectInput\",\"description\":\"Autogenerated input type of ImportProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerName\",\"description\":\"The name of the Organization or User to create the Project under.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The description of Project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"public\",\"description\":\"Whether the Project is public or not.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"columnImports\",\"description\":\"A list of columns containing issues and pull requests.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectColumnImport\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ImportProjectPayload\",\"description\":\"Autogenerated return type of ImportProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The new Project!\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"Int\",\"description\":\"Represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"InviteEnterpriseAdminInput\",\"description\":\"Autogenerated input type of InviteEnterpriseAdmin\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise to which you want to invite an administrator.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"invitee\",\"description\":\"The login of a user to invite as an administrator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"email\",\"description\":\"The email of the person to invite as an administrator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The role of the administrator.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"InviteEnterpriseAdminPayload\",\"description\":\"Autogenerated return type of InviteEnterpriseAdmin.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The created enterprise administrator invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"InviteEnterpriseMemberInput\",\"description\":\"Autogenerated input type of InviteEnterpriseMember\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise to which you want to invite an unaffiliated member.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"invitee\",\"description\":\"The login of a user to invite as an unaffiliated member.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"email\",\"description\":\"The email of the person to invite as an unaffiliated member.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"InviteEnterpriseMemberPayload\",\"description\":\"Autogenerated return type of InviteEnterpriseMember.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitation\",\"description\":\"The created enterprise member invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IpAllowListEnabledSettingValue\",\"description\":\"The possible values for the IP allow list enabled setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The setting is disabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"description\":\"An IP address or range of addresses that is allowed to access an owner's resources.\",\"fields\":[{\"name\":\"allowListValue\",\"description\":\"A single IP address or range of IP addresses in CIDR notation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IpAllowListEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isActive\",\"description\":\"Whether the entry is currently active.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the IP allow list entry.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The owner of the IP allow list entry.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"IpAllowListOwner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryConnection\",\"description\":\"The connection type for IpAllowListEntry.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IpAllowListEntryOrder\",\"description\":\"Ordering options for IP allow list entry connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order IP allow list entries by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListEntryOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IpAllowListEntryOrderField\",\"description\":\"Properties by which IP allow list entry connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order IP allow list entries by creation time.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALLOW_LIST_VALUE\",\"description\":\"Order IP allow list entries by the allow list value.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IpAllowListForInstalledAppsEnabledSettingValue\",\"description\":\"The possible values for the IP allow list configuration for installed GitHub Apps setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The setting is disabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"IpAllowListOwner\",\"description\":\"Types that can own an IP allow list.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"description\":\"An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project.\",\"fields\":[{\"name\":\"activeLockReason\",\"description\":\"Reason that the conversation was locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignedActors\",\"description\":\"A list of actors assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignees\",\"description\":\"A list of Users assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockedBy\",\"description\":\"A list of issues that are blocking this issue.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for dependencies\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueDependencyOrder\",\"ofType\":null},\"defaultValue\":\"{field: DEPENDENCY_ADDED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blocking\",\"description\":\"A list of issues that this issue is blocking.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for dependencies\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueDependencyOrder\",\"ofType\":null},\"defaultValue\":\"{field: DEPENDENCY_ADDED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"Identifies the body of the issue.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyResourcePath\",\"description\":\"The http path for this issue body\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"Identifies the body of the issue rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyUrl\",\"description\":\"The http URL for this issue body\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closed\",\"description\":\"Indicates if the object is closed (definition of closed may depend on type)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedByPullRequestsReferences\",\"description\":\"List of open pull requests referenced from this issue\",\"args\":[{\"name\":\"includeClosedPrs\",\"description\":\"Include closed PRs in results\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderByState\",\"description\":\"Return results ordered by state\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"userLinkedOnly\",\"description\":\"Return only manually linked PRs\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comments\",\"description\":\"A list of comments associated with the Issue.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issue comments returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueCommentOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duplicateOf\",\"description\":\"A reference to the original issue that this issue has been marked as a duplicate of.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hovercard\",\"description\":\"The hovercard information for this issue\",\"args\":[{\"name\":\"includeNotificationContexts\",\"description\":\"Whether or not to include notification contexts\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Hovercard\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Issue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPinned\",\"description\":\"Indicates whether or not this issue is currently pinned to the repository issues list\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isReadByViewer\",\"description\":\"Is this issue read by the viewer\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueDependenciesSummary\",\"description\":\"Summary of the state of an issue's dependencies\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueDependenciesSummary\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The issue type for this Issue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"A list of labels associated with the object.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"linkedBranches\",\"description\":\"Branches linked to this issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LinkedBranchConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"locked\",\"description\":\"`true` if the object is locked\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestone\",\"description\":\"Identifies the milestone associated with the issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the issue number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parent\",\"description\":\"The parent entity of the issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"participants\",\"description\":\"A list of Users that are participating in the Issue conversation.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectCards\",\"description\":\"List of project cards associated with this issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"archivedStates\",\"description\":\"A list of archived states to filter the cards by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectCardArchivedState\",\"ofType\":null}},\"defaultValue\":\"[ARCHIVED, NOT_ARCHIVED]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectItems\",\"description\":\"List of project items associated with this issue.\",\"args\":[{\"name\":\"includeArchived\",\"description\":\"Include archived items.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"Find a project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"query\",\"description\":\"A project to search for under the owner.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this issue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the state of the issue.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stateReason\",\"description\":\"Identifies the reason for the issue state.\",\"args\":[{\"name\":\"enableDuplicate\",\"description\":\"Whether or not to return state reason for duplicates\\n\\n**Upcoming Change on 2025-10-01 UTC**\\n**Description:** `enableDuplicate` will be removed.\\n**Reason:** The state reason for duplicate issue is now returned by default.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueStateReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssues\",\"description\":\"A list of sub-issues associated with the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssuesSummary\",\"description\":\"Summary of the state of an issue's sub-issues\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SubIssuesSummary\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedActors\",\"description\":\"A list of suggested actors to assign to this object\",\"args\":[{\"name\":\"query\",\"description\":\"If provided, searches users by login or profile name\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"timeline\",\"description\":\"A list of events, comments, commits, etc. associated with the issue.\",\"args\":[{\"name\":\"since\",\"description\":\"Allows filtering timeline events by a `since` timestamp.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`timeline` will be removed Use Issue.timelineItems instead. Removal on 2020-10-01 UTC.\"},{\"name\":\"timelineItems\",\"description\":\"A list of events, comments, commits, etc. associated with the issue.\",\"args\":[{\"name\":\"since\",\"description\":\"Filter timeline items by a `since` timestamp.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"skip\",\"description\":\"Skips the first _n_ elements in the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"itemTypes\",\"description\":\"Filter timeline items by type.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueTimelineItemsItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemsConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"Identifies the issue title.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"titleHTML\",\"description\":\"Identifies the issue title rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"trackedInIssues\",\"description\":\"A list of issues that track this issue\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"trackedIssues\",\"description\":\"A list of issues tracked inside the current issue\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"trackedIssuesCount\",\"description\":\"The number of tracked issues for this issue\",\"args\":[{\"name\":\"states\",\"description\":\"Limit the count to tracked issues with the specified states.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TrackedIssueStates\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this issue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanLabel\",\"description\":\"Indicates if the viewer can edit labels for this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSetFields\",\"description\":\"Check if the current viewer can set fields on the issue.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerThreadSubscriptionFormAction\",\"description\":\"Identifies the viewer's thread subscription form action.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionFormAction\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerThreadSubscriptionStatus\",\"description\":\"Identifies the viewer's thread subscription status.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"SubscribableThread\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueClosedStateReason\",\"description\":\"The possible state reasons of a closed issue.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"COMPLETED\",\"description\":\"An issue that has been closed as completed\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOT_PLANNED\",\"description\":\"An issue that has been closed as not planned\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DUPLICATE\",\"description\":\"An issue that has been closed as a duplicate\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"description\":\"Represents a comment on an Issue.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IssueComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"Identifies the issue associated with the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Returns the pull request associated with the comment, if this comment was made on a\\npull request.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this issue comment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this issue comment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueCommentConnection\",\"description\":\"The connection type for IssueComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueCommentOrder\",\"description\":\"Ways in which lists of issue comments can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order issue comments by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueCommentOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order issue comments by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueCommentOrderField\",\"description\":\"Properties by which issue comment connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UPDATED_AT\",\"description\":\"Order issue comments by update time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"description\":\"The connection type for Issue.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueContributionsByRepository\",\"description\":\"This aggregates issues opened by a user within one repository.\",\"fields\":[{\"name\":\"contributions\",\"description\":\"The issue contributions.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedIssueContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository in which the issues were opened.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueDependenciesSummary\",\"description\":\"Summary of the state of an issue's dependencies\",\"fields\":[{\"name\":\"blockedBy\",\"description\":\"Count of issues this issue is blocked by\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blocking\",\"description\":\"Count of issues this issue is blocking\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalBlockedBy\",\"description\":\"Total count of issues this issue is blocked by (open and closed)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalBlocking\",\"description\":\"Total count of issues this issue is blocking (open and closed)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueDependencyOrder\",\"description\":\"Ordering options issue dependencies\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order issue dependencies by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueDependencyOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueDependencyOrderField\",\"description\":\"Properties by which issue dependencies can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DEPENDENCY_ADDED_AT\",\"description\":\"Order issue dependencies by time of when the dependency relationship was added\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order issue dependencies by the creation time of the dependent issue\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"description\":\"Ways in which to filter lists of issues.\",\"fields\":null,\"inputFields\":[{\"name\":\"assignee\",\"description\":\"List issues assigned to given name. Pass in `null` for issues with no assigned user, and `*` for issues assigned to any user.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"createdBy\",\"description\":\"List issues created by given name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"List issues where the list of label names exist on the issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"mentioned\",\"description\":\"List issues where the given name is mentioned in the issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"milestone\",\"description\":\"List issues by given milestone argument. If an string representation of an integer is passed, it should refer to a milestone by its database ID. Pass in `null` for issues with no milestone, and `*` for issues that are assigned to any milestone.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"milestoneNumber\",\"description\":\"List issues by given milestone argument. If an string representation of an integer is passed, it should refer to a milestone by its number field. Pass in `null` for issues with no milestone, and `*` for issues that are assigned to any milestone.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"since\",\"description\":\"List issues that have been updated at or after the given date.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"List issues filtered by the list of states given.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"type\",\"description\":\"List issues filtered by the type given, only supported by searches on repositories.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"viewerSubscribed\",\"description\":\"List issues subscribed to by viewer.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"description\":\"Used for return value of Repository.issueOrPullRequest.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"description\":\"Ways in which lists of issues can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order issues by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order issues by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueOrderField\",\"description\":\"Properties by which issue connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order issues by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order issues by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMENTS\",\"description\":\"Order issues by comment count\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"description\":\"The possible states of an issue.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"An issue that is still open\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"An issue that has been closed\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueStateReason\",\"description\":\"The possible state reasons of an issue.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REOPENED\",\"description\":\"An issue that has been reopened\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOT_PLANNED\",\"description\":\"An issue that has been closed as not planned\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPLETED\",\"description\":\"An issue that has been closed as completed\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DUPLICATE\",\"description\":\"An issue that has been closed as a duplicate.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTemplate\",\"description\":\"A repository issue template.\",\"fields\":[{\"name\":\"about\",\"description\":\"The template purpose.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignees\",\"description\":\"The suggested assignees.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The suggested issue body.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filename\",\"description\":\"The template filename.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"The suggested issue labels\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The template name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The suggested issue title.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"The suggested issue type\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineConnection\",\"description\":\"The connection type for IssueTimelineItem.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"IssueTimelineItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"IssueTimelineItem\",\"description\":\"An item in an issue timeline\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueTimelineItem\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"IssueTimelineItems\",\"description\":\"An item in an issue timeline\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommentDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedFromDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedNoteToIssueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedToDiscussionEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DisconnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MentionedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MovedColumnsInProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemStatusChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnpinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemsConnection\",\"description\":\"The connection type for IssueTimelineItems.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemsEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filteredCount\",\"description\":\"Identifies the count of items after applying `before` and `after` filters.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"IssueTimelineItems\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageCount\",\"description\":\"Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the timeline was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTimelineItemsEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueTimelineItems\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueTimelineItemsItemType\",\"description\":\"The possible item types found in a timeline.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ISSUE_COMMENT\",\"description\":\"Represents a comment on an Issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CROSS_REFERENCED_EVENT\",\"description\":\"Represents a mention made by one issue or pull request to another.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADDED_TO_PROJECT_EVENT\",\"description\":\"Represents a 'added_to_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADDED_TO_PROJECT_V2_EVENT\",\"description\":\"Represents a 'added_to_project_v2' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ASSIGNED_EVENT\",\"description\":\"Represents an 'assigned' event on any assignable object.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED_EVENT\",\"description\":\"Represents a 'closed' event on any `Closable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMENT_DELETED_EVENT\",\"description\":\"Represents a 'comment_deleted' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONNECTED_EVENT\",\"description\":\"Represents a 'connected' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_FROM_DRAFT_EVENT\",\"description\":\"Represents a 'converted_from_draft' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_NOTE_TO_ISSUE_EVENT\",\"description\":\"Represents a 'converted_note_to_issue' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_TO_DISCUSSION_EVENT\",\"description\":\"Represents a 'converted_to_discussion' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DEMILESTONED_EVENT\",\"description\":\"Represents a 'demilestoned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISCONNECTED_EVENT\",\"description\":\"Represents a 'disconnected' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LABELED_EVENT\",\"description\":\"Represents a 'labeled' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOCKED_EVENT\",\"description\":\"Represents a 'locked' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MARKED_AS_DUPLICATE_EVENT\",\"description\":\"Represents a 'marked_as_duplicate' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MENTIONED_EVENT\",\"description\":\"Represents a 'mentioned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MILESTONED_EVENT\",\"description\":\"Represents a 'milestoned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MOVED_COLUMNS_IN_PROJECT_EVENT\",\"description\":\"Represents a 'moved_columns_in_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PINNED_EVENT\",\"description\":\"Represents a 'pinned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PROJECT_V2_ITEM_STATUS_CHANGED_EVENT\",\"description\":\"Represents a 'project_v2_item_status_changed' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REFERENCED_EVENT\",\"description\":\"Represents a 'referenced' event on a given `ReferencedSubject`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVED_FROM_PROJECT_EVENT\",\"description\":\"Represents a 'removed_from_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVED_FROM_PROJECT_V2_EVENT\",\"description\":\"Represents a 'removed_from_project_v2' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RENAMED_TITLE_EVENT\",\"description\":\"Represents a 'renamed' event on a given issue or pull request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REOPENED_EVENT\",\"description\":\"Represents a 'reopened' event on any `Closable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_EVENT\",\"description\":\"Represents a 'subscribed' event on a given `Subscribable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRANSFERRED_EVENT\",\"description\":\"Represents a 'transferred' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNASSIGNED_EVENT\",\"description\":\"Represents an 'unassigned' event on any assignable object.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNLABELED_EVENT\",\"description\":\"Represents an 'unlabeled' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNLOCKED_EVENT\",\"description\":\"Represents an 'unlocked' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER_BLOCKED_EVENT\",\"description\":\"Represents a 'user_blocked' event on a given user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNMARKED_AS_DUPLICATE_EVENT\",\"description\":\"Represents an 'unmarked_as_duplicate' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNPINNED_EVENT\",\"description\":\"Represents an 'unpinned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNSUBSCRIBED_EVENT\",\"description\":\"Represents an 'unsubscribed' event on a given `Subscribable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_ADDED_EVENT\",\"description\":\"Represents a 'issue_type_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_REMOVED_EVENT\",\"description\":\"Represents a 'issue_type_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_CHANGED_EVENT\",\"description\":\"Represents a 'issue_type_changed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_ADDED_EVENT\",\"description\":\"Represents a 'issue_field_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_REMOVED_EVENT\",\"description\":\"Represents a 'issue_field_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_CHANGED_EVENT\",\"description\":\"Represents a 'issue_field_changed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUB_ISSUE_ADDED_EVENT\",\"description\":\"Represents a 'sub_issue_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUB_ISSUE_REMOVED_EVENT\",\"description\":\"Represents a 'sub_issue_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PARENT_ISSUE_ADDED_EVENT\",\"description\":\"Represents a 'parent_issue_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PARENT_ISSUE_REMOVED_EVENT\",\"description\":\"Represents a 'parent_issue_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKED_BY_ADDED_EVENT\",\"description\":\"Represents a 'blocked_by_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKING_ADDED_EVENT\",\"description\":\"Represents a 'blocking_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKED_BY_REMOVED_EVENT\",\"description\":\"Represents a 'blocked_by_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKING_REMOVED_EVENT\",\"description\":\"Represents a 'blocking_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"description\":\"Represents the type of Issue.\",\"fields\":[{\"name\":\"color\",\"description\":\"The issue type's color.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueTypeColor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The issue type's description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IssueType object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isEnabled\",\"description\":\"The issue type's enabled state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrivate\",\"description\":\"Whether the issue type is publicly visible.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Private issue types are being deprecated and can no longer be created. Removal on 2025-04-01 UTC.\"},{\"name\":\"issues\",\"description\":\"The issues with this issue type in the given repository.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the issues by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Target repository to load the issues from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The issue type's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeAddedEvent\",\"description\":\"Represents a 'issue_type_added' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IssueTypeAddedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The issue type added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeChangedEvent\",\"description\":\"Represents a 'issue_type_changed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IssueTypeChangedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The issue type added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"prevIssueType\",\"description\":\"The issue type removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueTypeColor\",\"description\":\"The possible color for an issue type\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GRAY\",\"description\":\"gray\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLUE\",\"description\":\"blue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GREEN\",\"description\":\"green\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"YELLOW\",\"description\":\"yellow\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORANGE\",\"description\":\"orange\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RED\",\"description\":\"red\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PINK\",\"description\":\"pink\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PURPLE\",\"description\":\"purple\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeConnection\",\"description\":\"The connection type for IssueType.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTypeEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueTypeOrder\",\"description\":\"Ordering options for issue types connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order issue types by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueTypeOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"IssueTypeOrderField\",\"description\":\"Properties by which issue type connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order issue types by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order issue types by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeRemovedEvent\",\"description\":\"Represents a 'issue_type_removed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the IssueTypeRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The issue type removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"JoinedGitHubContribution\",\"description\":\"Represents a user signing up for a GitHub account.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Label\",\"description\":\"A label for categorizing Issues, Pull Requests, Milestones, or Discussions with a given Repository.\",\"fields\":[{\"name\":\"color\",\"description\":\"Identifies the label color.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the label was created.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"A brief description of this label.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Label object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDefault\",\"description\":\"Indicates whether or not this is a default label.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issues\",\"description\":\"A list of issues associated with this label.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the issues by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Identifies the label name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequests\",\"description\":\"A list of pull requests associated with this label.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this label.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this label.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the label was last updated.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this label.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"description\":\"The connection type for Label.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LabelEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LabelEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"description\":\"Ways in which lists of labels can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order labels by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"LabelOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order labels by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"LabelOrderField\",\"description\":\"Properties by which label connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NAME\",\"description\":\"Order labels by name \",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order labels by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_COUNT\",\"description\":\"Order labels by issue count\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"description\":\"An object that can have labels assigned to it.\",\"fields\":[{\"name\":\"labels\",\"description\":\"A list of labels associated with the object.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanLabel\",\"description\":\"Indicates if the viewer can edit labels for this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"description\":\"Represents a 'labeled' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the LabeledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"Identifies the label associated with the 'labeled' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labelable\",\"description\":\"Identifies the `Labelable` associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Language\",\"description\":\"Represents a given language found in repositories.\",\"fields\":[{\"name\":\"color\",\"description\":\"The color defined for the current language.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Language object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the current language.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LanguageConnection\",\"description\":\"A list of languages associated with the parent.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LanguageEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalSize\",\"description\":\"The total size in bytes of files written in that language.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LanguageEdge\",\"description\":\"Represents the language of a repository.\",\"fields\":[{\"name\":\"cursor\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"size\",\"description\":\"The number of bytes of code written in the language.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LanguageOrder\",\"description\":\"Ordering options for language connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order languages by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"LanguageOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"LanguageOrderField\",\"description\":\"Properties by which language connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SIZE\",\"description\":\"Order languages by the size of all files containing the language\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"License\",\"description\":\"A repository's open source license\",\"fields\":[{\"name\":\"body\",\"description\":\"The full text of the license\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conditions\",\"description\":\"The conditions set by the license\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LicenseRule\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"A human-readable description of the license\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"featured\",\"description\":\"Whether the license should be featured\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hidden\",\"description\":\"Whether the license should be displayed in license pickers\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the License object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"implementation\",\"description\":\"Instructions on how to implement the license\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"key\",\"description\":\"The lowercased SPDX ID of the license\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"limitations\",\"description\":\"The limitations set by the license\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LicenseRule\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The license full name specified by <https://spdx.org/licenses>\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nickname\",\"description\":\"Customary short name if applicable (e.g, GPLv3)\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permissions\",\"description\":\"The permissions set by the license\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LicenseRule\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pseudoLicense\",\"description\":\"Whether the license is a pseudo-license placeholder (e.g., other, no-license)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"spdxId\",\"description\":\"Short identifier specified by <https://spdx.org/licenses>\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"URL to the license on <https://choosealicense.com>\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LicenseRule\",\"description\":\"Describes a License's conditions, permissions, and limitations\",\"fields\":[{\"name\":\"description\",\"description\":\"A description of the rule\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"key\",\"description\":\"The machine-readable rule key\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"The human-readable rule label\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkProjectV2ToRepositoryInput\",\"description\":\"Autogenerated input type of LinkProjectV2ToRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the project to link to the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to link to the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkProjectV2ToRepositoryPayload\",\"description\":\"Autogenerated return type of LinkProjectV2ToRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the project is linked to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkProjectV2ToTeamInput\",\"description\":\"Autogenerated input type of LinkProjectV2ToTeam\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the project to link to the team.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"teamId\",\"description\":\"The ID of the team to link to the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkProjectV2ToTeamPayload\",\"description\":\"Autogenerated return type of LinkProjectV2ToTeam.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"The team the project is linked to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkRepositoryToProjectInput\",\"description\":\"Autogenerated input type of LinkRepositoryToProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to link to a Repository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the Repository to link to a Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkRepositoryToProjectPayload\",\"description\":\"Autogenerated return type of LinkRepositoryToProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The linked Project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The linked Repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkedBranch\",\"description\":\"A branch linked to an issue.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the LinkedBranch object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The branch's ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkedBranchConnection\",\"description\":\"A list of branches linked to an issue.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LinkedBranchEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"LinkedBranch\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkedBranchEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LinkedBranch\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"LockLockableInput\",\"description\":\"Autogenerated input type of LockLockable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockableId\",\"description\":\"ID of the item to be locked.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"lockReason\",\"description\":\"A reason for why the item will be locked.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"LockLockablePayload\",\"description\":\"Autogenerated return type of LockLockable.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockedRecord\",\"description\":\"The item that was locked.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"description\":\"The possible reasons that an issue or pull request was locked.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OFF_TOPIC\",\"description\":\"The issue or pull request was locked because the conversation was off-topic.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TOO_HEATED\",\"description\":\"The issue or pull request was locked because the conversation was too heated.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RESOLVED\",\"description\":\"The issue or pull request was locked because the conversation was resolved.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SPAM\",\"description\":\"The issue or pull request was locked because the conversation was spam.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"description\":\"An object that can be locked.\",\"fields\":[{\"name\":\"activeLockReason\",\"description\":\"Reason that the conversation was locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"locked\",\"description\":\"`true` if the object is locked\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"description\":\"Represents a 'locked' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the LockedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockReason\",\"description\":\"Reason that the conversation was locked (optional).\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockable\",\"description\":\"Object that was locked.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"description\":\"A placeholder user for attribution of imported data on GitHub.\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the GitHub App's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"claimant\",\"description\":\"The user that has claimed the data attributed to this mannequin.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The mannequin's email on the source instance.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Mannequin object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username of the actor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The display name of the imported mannequin.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTML path to this resource.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The URL to this resource.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MannequinConnection\",\"description\":\"A list of mannequins.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MannequinEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MannequinEdge\",\"description\":\"Represents a mannequin.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MannequinOrder\",\"description\":\"Ordering options for mannequins.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order mannequins by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MannequinOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MannequinOrderField\",\"description\":\"Properties by which mannequins can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order mannequins alphabetically by their source login.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order mannequins why when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkAllNotificationsInput\",\"description\":\"Autogenerated input type of MarkAllNotifications\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"Filter used to mark all specific notifications.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"The new state for the notification.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationStatus\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkAllNotificationsPayload\",\"description\":\"Autogenerated return type of MarkAllNotifications.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkDiscussionCommentAsAnswerInput\",\"description\":\"Autogenerated input type of MarkDiscussionCommentAsAnswer\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the discussion comment to mark as an answer.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkDiscussionCommentAsAnswerPayload\",\"description\":\"Autogenerated return type of MarkDiscussionCommentAsAnswer.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that includes the chosen comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkFileAsViewedInput\",\"description\":\"Autogenerated input type of MarkFileAsViewed\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"path\",\"description\":\"The path of the file to mark as viewed\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkFileAsViewedPayload\",\"description\":\"Autogenerated return type of MarkFileAsViewed.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The updated pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsDoneInput\",\"description\":\"Autogenerated input type of MarkNotificationAsDone\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The NotificationThread id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsDonePayload\",\"description\":\"Autogenerated return type of MarkNotificationAsDone.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsReadInput\",\"description\":\"Autogenerated input type of MarkNotificationAsRead\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The NotificationThread id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsReadPayload\",\"description\":\"Autogenerated return type of MarkNotificationAsRead.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsUndoneInput\",\"description\":\"Autogenerated input type of MarkNotificationAsUndone\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The NotificationThread id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsUndonePayload\",\"description\":\"Autogenerated return type of MarkNotificationAsUndone.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsUnreadInput\",\"description\":\"Autogenerated input type of MarkNotificationAsUnread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The NotificationThread id.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsUnreadPayload\",\"description\":\"Autogenerated return type of MarkNotificationAsUnread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationSubjectAsReadInput\",\"description\":\"Autogenerated input type of MarkNotificationSubjectAsRead\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The id of the notification subject to mark as read.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationSubjectAsReadPayload\",\"description\":\"Autogenerated return type of MarkNotificationSubjectAsRead.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The user that the saved notification belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsDoneInput\",\"description\":\"Autogenerated input type of MarkNotificationsAsDone\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ids\",\"description\":\"The NotificationThread IDs that will be marked as done.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsDonePayload\",\"description\":\"Autogenerated return type of MarkNotificationsAsDone.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsReadInput\",\"description\":\"Autogenerated input type of MarkNotificationsAsRead\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ids\",\"description\":\"The NotificationThread IDs that will be marked as read.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsReadPayload\",\"description\":\"Autogenerated return type of MarkNotificationsAsRead.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsUndoneInput\",\"description\":\"Autogenerated input type of MarkNotificationsAsUndone\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ids\",\"description\":\"The NotificationThread IDs to be marked as undone.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsUndonePayload\",\"description\":\"Autogenerated return type of MarkNotificationsAsUndone.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsUnreadInput\",\"description\":\"Autogenerated input type of MarkNotificationsAsUnread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ids\",\"description\":\"The NotificationThread IDs that will be marked as unread.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsUnreadPayload\",\"description\":\"Autogenerated return type of MarkNotificationsAsUnread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkProjectV2AsTemplateInput\",\"description\":\"Autogenerated input type of MarkProjectV2AsTemplate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to mark as a template.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkProjectV2AsTemplatePayload\",\"description\":\"Autogenerated return type of MarkProjectV2AsTemplate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkPullRequestReadyForReviewInput\",\"description\":\"Autogenerated input type of MarkPullRequestReadyForReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to be marked as ready for review.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkPullRequestReadyForReviewPayload\",\"description\":\"Autogenerated return type of MarkPullRequestReadyForReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that is ready for review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkedAsDuplicateEvent\",\"description\":\"Represents a 'marked_as_duplicate' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"canonical\",\"description\":\"The authoritative issue or pull request which has been duplicated by another.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duplicate\",\"description\":\"The issue or pull request which has been marked as a duplicate of another.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MarkedAsDuplicateEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Canonical and duplicate belong to different repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"description\":\"A public description of a Marketplace category.\",\"fields\":[{\"name\":\"description\",\"description\":\"The category's description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"howItWorks\",\"description\":\"The technical description of how apps listed in this category work with GitHub.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MarketplaceCategory object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The category's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"primaryListingCount\",\"description\":\"How many Marketplace listings have this as their primary category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this Marketplace category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"secondaryListingCount\",\"description\":\"How many Marketplace listings have this as their secondary category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The short name of the category used in its URL.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this Marketplace category.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"description\":\"A listing in the GitHub integration marketplace.\",\"fields\":[{\"name\":\"app\",\"description\":\"The GitHub App this listing represents.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"companyUrl\",\"description\":\"URL to the listing owner's company site.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"configurationResourcePath\",\"description\":\"The HTTP path for configuring access to the listing's integration or OAuth app\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"configurationUrl\",\"description\":\"The HTTP URL for configuring access to the listing's integration or OAuth app\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"documentationUrl\",\"description\":\"URL to the listing's documentation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"extendedDescription\",\"description\":\"The listing's detailed description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"extendedDescriptionHTML\",\"description\":\"The listing's detailed description rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDescription\",\"description\":\"The listing's introductory description.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDescriptionHTML\",\"description\":\"The listing's introductory description rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasPublishedFreeTrialPlans\",\"description\":\"Does this listing have any plans with a free trial?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasTermsOfService\",\"description\":\"Does this listing have a terms of service link?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasVerifiedOwner\",\"description\":\"Whether the creator of the app is a verified org\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"howItWorks\",\"description\":\"A technical description of how this app works with GitHub.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"howItWorksHTML\",\"description\":\"The listing's technical description rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MarketplaceListing object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"installationUrl\",\"description\":\"URL to install the product to the viewer's account or organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"installedForViewer\",\"description\":\"Whether this listing's app has been installed for the current viewer\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isArchived\",\"description\":\"Whether this listing has been removed from the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDraft\",\"description\":\"Whether this listing is still an editable draft that has not been submitted for review and is not publicly visible in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPaid\",\"description\":\"Whether the product this listing represents is available as part of a paid plan.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPublic\",\"description\":\"Whether this listing has been approved for display in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRejected\",\"description\":\"Whether this listing has been rejected by GitHub for display in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUnverified\",\"description\":\"Whether this listing has been approved for unverified display in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUnverifiedPending\",\"description\":\"Whether this draft listing has been submitted for review for approval to be unverified in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isVerificationPendingFromDraft\",\"description\":\"Whether this draft listing has been submitted for review from GitHub for approval to be verified in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isVerificationPendingFromUnverified\",\"description\":\"Whether this unverified listing has been submitted for review from GitHub for approval to be verified in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isVerified\",\"description\":\"Whether this listing has been approved for verified display in the Marketplace.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"logoBackgroundColor\",\"description\":\"The hex color code, without the leading '#', for the logo background.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"logoUrl\",\"description\":\"URL for the listing's logo image.\",\"args\":[{\"name\":\"size\",\"description\":\"The size in pixels of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"400\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The listing's full name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"normalizedShortDescription\",\"description\":\"The listing's very short description without a trailing period or ampersands.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pricingUrl\",\"description\":\"URL to the listing's detailed pricing.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"primaryCategory\",\"description\":\"The category that best describes the listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"privacyPolicyUrl\",\"description\":\"URL to the listing's privacy policy, may return an empty string for listings that do not require a privacy policy URL.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for the Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"screenshotUrls\",\"description\":\"The URLs for the listing's screenshots.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"secondaryCategory\",\"description\":\"An alternate category that describes the listing.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescription\",\"description\":\"The listing's very short description.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The short name of the listing used in its URL.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusUrl\",\"description\":\"URL to the listing's status page.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"supportEmail\",\"description\":\"An email address for support for this listing's app.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"supportUrl\",\"description\":\"Either a URL or an email address for support for this listing's app, may return an empty string for listings that do not require a support URL.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"termsOfServiceUrl\",\"description\":\"URL to the listing's terms of service.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for the Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanAddPlans\",\"description\":\"Can the current viewer add plans for this Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanApprove\",\"description\":\"Can the current viewer approve this Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelist\",\"description\":\"Can the current viewer delist this Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanEdit\",\"description\":\"Can the current viewer edit this Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanEditCategories\",\"description\":\"Can the current viewer edit the primary and secondary category of this\\nMarketplace listing.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanEditPlans\",\"description\":\"Can the current viewer edit the plans for this Marketplace listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanRedraft\",\"description\":\"Can the current viewer return this Marketplace listing to draft state\\nso it becomes editable again.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReject\",\"description\":\"Can the current viewer reject this Marketplace listing by returning it to\\nan editable draft state or rejecting it entirely.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanRequestApproval\",\"description\":\"Can the current viewer request this listing be reviewed for display in\\nthe Marketplace as verified.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasPurchased\",\"description\":\"Indicates whether the current user has an active subscription to this Marketplace listing.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasPurchasedForAllOrganizations\",\"description\":\"Indicates if the current user has purchased a subscription to this Marketplace listing\\nfor all of the organizations the user owns.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsListingAdmin\",\"description\":\"Does the current viewer role allow them to administer this Marketplace listing.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListingConnection\",\"description\":\"Look up Marketplace Listings\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListingEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListingEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MaxFilePathLengthParameters\",\"description\":\"Prevent commits that include file paths that exceed the specified character limit from being pushed to the commit graph.\",\"fields\":[{\"name\":\"maxFilePathLength\",\"description\":\"The maximum amount of characters allowed in file paths.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MaxFilePathLengthParametersInput\",\"description\":\"Prevent commits that include file paths that exceed the specified character limit from being pushed to the commit graph.\",\"fields\":null,\"inputFields\":[{\"name\":\"maxFilePathLength\",\"description\":\"The maximum amount of characters allowed in file paths.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MaxFileSizeParameters\",\"description\":\"Prevent commits with individual files that exceed the specified limit from being pushed to the commit graph.\",\"fields\":[{\"name\":\"maxFileSize\",\"description\":\"The maximum file size allowed in megabytes. This limit does not apply to Git Large File Storage (Git LFS).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MaxFileSizeParametersInput\",\"description\":\"Prevent commits with individual files that exceed the specified limit from being pushed to the commit graph.\",\"fields\":null,\"inputFields\":[{\"name\":\"maxFileSize\",\"description\":\"The maximum file size allowed in megabytes. This limit does not apply to Git Large File Storage (Git LFS).\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MemberFeatureRequestNotification\",\"description\":\"Represents a member feature request notification\",\"fields\":[{\"name\":\"body\",\"description\":\"Represents member feature request body containing entity name and the number of feature requests\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MemberFeatureRequestNotification object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"Represents member feature request notification title\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"MemberStatusable\",\"description\":\"Entities that have members who can set status messages.\",\"fields\":[{\"name\":\"memberStatuses\",\"description\":\"Get the status messages members of this entity have set that are either public or visible only to the organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for user statuses returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UserStatusOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserStatusConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"description\":\"Audit log entry for a members_can_delete_repos.clear event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MembersCanDeleteReposClearAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"description\":\"Audit log entry for a members_can_delete_repos.disable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MembersCanDeleteReposDisableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"description\":\"Audit log entry for a members_can_delete_repos.enable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MembersCanDeleteReposEnableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MentionedEvent\",\"description\":\"Represents a 'mentioned' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MentionedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergeBranchInput\",\"description\":\"Autogenerated input type of MergeBranch\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the Repository containing the base branch that will be modified.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"base\",\"description\":\"The name of the base branch that the provided head will be merged into.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"head\",\"description\":\"The head to merge into the base branch. This can be a branch name or a commit GitObjectID.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"commitMessage\",\"description\":\"Message to use for the merge commit. If omitted, a default will be used.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"authorEmail\",\"description\":\"The email address to associate with this commit.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeBranchPayload\",\"description\":\"Autogenerated return type of MergeBranch.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeCommit\",\"description\":\"The resulting merge Commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeCommitMessage\",\"description\":\"The possible default commit messages for merges.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PR_TITLE\",\"description\":\"Default to the pull request's title.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PR_BODY\",\"description\":\"Default to the pull request's body.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLANK\",\"description\":\"Default to a blank commit message.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeCommitTitle\",\"description\":\"The possible default commit titles for merges.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PR_TITLE\",\"description\":\"Default to the pull request's title.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGE_MESSAGE\",\"description\":\"Default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergePullRequestInput\",\"description\":\"Autogenerated input type of MergePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to be merged.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"commitHeadline\",\"description\":\"Commit headline to use for the merge commit; if omitted, a default message will be used.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commitBody\",\"description\":\"Commit body to use for the merge commit; if omitted, a default message will be used\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"expectedHeadOid\",\"description\":\"OID that the pull request head ref must match to allow merge; if omitted, no check is performed.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"mergeMethod\",\"description\":\"The merge method to use. If omitted, defaults to 'MERGE'\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null},\"defaultValue\":\"MERGE\"},{\"name\":\"authorEmail\",\"description\":\"The email address to associate with this merge.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergePullRequestPayload\",\"description\":\"Autogenerated return type of MergePullRequest.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that was merged.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"description\":\"The queue of pull request entries to be merged into a protected branch in a repository.\",\"fields\":[{\"name\":\"configuration\",\"description\":\"The configuration for this merge queue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"entries\",\"description\":\"The entries in the queue\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntryConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MergeQueue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nextEntryEstimatedTimeToMerge\",\"description\":\"The estimated time in seconds until a newly added entry would be merged\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository this merge queue belongs to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this merge queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this merge queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueConfiguration\",\"description\":\"Configuration for a MergeQueue\",\"fields\":[{\"name\":\"checkResponseTimeout\",\"description\":\"The amount of time in minutes to wait for a check response before considering it a failure.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maximumEntriesToBuild\",\"description\":\"The maximum number of entries to build at once.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maximumEntriesToMerge\",\"description\":\"The maximum number of entries to merge at once.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeMethod\",\"description\":\"The merge method to use for this queue.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergingStrategy\",\"description\":\"The strategy to use when merging entries.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueMergingStrategy\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimumEntriesToMerge\",\"description\":\"The minimum number of entries required to merge at once.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimumEntriesToMergeWaitTime\",\"description\":\"The amount of time in minutes to wait before ignoring the minumum number of entries in the queue requirement and merging a collection of entries\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"description\":\"Entries in a MergeQueue\",\"fields\":[{\"name\":\"baseCommit\",\"description\":\"The base commit for this entry\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enqueuedAt\",\"description\":\"The date and time this entry was added to the merge queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enqueuer\",\"description\":\"The actor that enqueued this entry\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"estimatedTimeToMerge\",\"description\":\"The estimated time in seconds until this entry will be merged\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headCommit\",\"description\":\"The head commit for this entry\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MergeQueueEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"jump\",\"description\":\"Whether this pull request should jump the queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueue\",\"description\":\"The merge queue that this entry belongs to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"The position of this entry in the queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that will be added to a merge group\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"solo\",\"description\":\"Does this pull request need to be deployed on its own\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this entry in the queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueEntryState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntryConnection\",\"description\":\"The connection type for MergeQueueEntry.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeQueueEntryState\",\"description\":\"The possible states for a merge queue entry.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"QUEUED\",\"description\":\"The entry is currently queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AWAITING_CHECKS\",\"description\":\"The entry is currently waiting for checks to pass.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGEABLE\",\"description\":\"The entry is currently mergeable.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNMERGEABLE\",\"description\":\"The entry is currently unmergeable.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOCKED\",\"description\":\"The entry is currently locked.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeQueueGroupingStrategy\",\"description\":\"When set to ALLGREEN, the merge commit created by merge queue for each PR in the group must pass all required checks to merge. When set to HEADGREEN, only the commit at the head of the merge group, i.e. the commit containing changes from all of the PRs in the group, must pass its required checks to merge.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALLGREEN\",\"description\":\"The merge commit created by merge queue for each PR in the group must pass all required checks to merge\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEADGREEN\",\"description\":\"Only the commit at the head of the merge group must pass its required checks to merge.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeQueueMergeMethod\",\"description\":\"Method to use when merging changes from queued pull requests.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGE\",\"description\":\"Merge commit\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SQUASH\",\"description\":\"Squash and merge\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REBASE\",\"description\":\"Rebase and merge\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeQueueMergingStrategy\",\"description\":\"The possible merging strategies for a merge queue.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALLGREEN\",\"description\":\"Entries only allowed to merge if they are passing.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEADGREEN\",\"description\":\"Failing Entires are allowed to merge if they are with a passing entry.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueParameters\",\"description\":\"Merges must be performed via a merge queue.\",\"fields\":[{\"name\":\"checkResponseTimeoutMinutes\",\"description\":\"Maximum time for a required status check to report a conclusion. After this much time has elapsed, checks that have not reported a conclusion will be assumed to have failed\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"groupingStrategy\",\"description\":\"When set to ALLGREEN, the merge commit created by merge queue for each PR in the group must pass all required checks to merge. When set to HEADGREEN, only the commit at the head of the merge group, i.e. the commit containing changes from all of the PRs in the group, must pass its required checks to merge.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueGroupingStrategy\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maxEntriesToBuild\",\"description\":\"Limit the number of queued pull requests requesting checks and workflow runs at the same time.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maxEntriesToMerge\",\"description\":\"The maximum number of PRs that will be merged together in a group.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeMethod\",\"description\":\"Method to use when merging changes from queued pull requests.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueMergeMethod\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minEntriesToMerge\",\"description\":\"The minimum number of PRs that will be merged together in a group.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minEntriesToMergeWaitMinutes\",\"description\":\"The time merge queue should wait after the first PR is added to the queue for the minimum group size to be met. After this time has elapsed, the minimum group size will be ignored and a smaller group will be merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergeQueueParametersInput\",\"description\":\"Merges must be performed via a merge queue.\",\"fields\":null,\"inputFields\":[{\"name\":\"checkResponseTimeoutMinutes\",\"description\":\"Maximum time for a required status check to report a conclusion. After this much time has elapsed, checks that have not reported a conclusion will be assumed to have failed\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"groupingStrategy\",\"description\":\"When set to ALLGREEN, the merge commit created by merge queue for each PR in the group must pass all required checks to merge. When set to HEADGREEN, only the commit at the head of the merge group, i.e. the commit containing changes from all of the PRs in the group, must pass its required checks to merge.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueGroupingStrategy\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"maxEntriesToBuild\",\"description\":\"Limit the number of queued pull requests requesting checks and workflow runs at the same time.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"maxEntriesToMerge\",\"description\":\"The maximum number of PRs that will be merged together in a group.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"mergeMethod\",\"description\":\"Method to use when merging changes from queued pull requests.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeQueueMergeMethod\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"minEntriesToMerge\",\"description\":\"The minimum number of PRs that will be merged together in a group.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"minEntriesToMergeWaitMinutes\",\"description\":\"The time merge queue should wait after the first PR is added to the queue for the minimum group size to be met. After this time has elapsed, the minimum group size will be ignored and a smaller group will be merged.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeStateStatus\",\"description\":\"Detailed status information about a pull request merge.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DIRTY\",\"description\":\"The merge commit cannot be cleanly created.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNKNOWN\",\"description\":\"The state cannot currently be determined.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKED\",\"description\":\"The merge is blocked.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BEHIND\",\"description\":\"The head ref is out of date.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DRAFT\",\"description\":\"The merge is blocked due to the pull request being a draft.\",\"isDeprecated\":true,\"deprecationReason\":\"DRAFT state will be removed from this enum and `isDraft` should be used instead Use PullRequest.isDraft instead. Removal on 2021-01-01 UTC.\"},{\"name\":\"UNSTABLE\",\"description\":\"Mergeable with non-passing commit status.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HAS_HOOKS\",\"description\":\"Mergeable with passing commit status and pre-receive hooks.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLEAN\",\"description\":\"Mergeable and passing commit status.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MergeableState\",\"description\":\"Whether or not a PullRequest can be merged.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGEABLE\",\"description\":\"The pull request can be merged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONFLICTING\",\"description\":\"The pull request cannot be merged due to merge conflicts.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNKNOWN\",\"description\":\"The mergeability of the pull request is still being calculated.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MergedEvent\",\"description\":\"Represents a 'merged' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the commit associated with the `merge` event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MergedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeRef\",\"description\":\"Identifies the Ref associated with the `merge` event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeRefName\",\"description\":\"Identifies the name of the Ref associated with the `merge` event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this merged event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this merged event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Migration\",\"description\":\"Represents a GitHub Enterprise Importer (GEI) migration.\",\"fields\":[{\"name\":\"continueOnError\",\"description\":\"The migration flag to continue on error.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"failureReason\",\"description\":\"The reason the migration failed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Migration object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"migrationLogUrl\",\"description\":\"The URL for the migration log (expires 1 day after migration completes).\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"migrationSource\",\"description\":\"The migration source.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MigrationSource\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The target repository name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sourceUrl\",\"description\":\"The migration source URL, for example `https://github.com` or `https://monalisa.ghe.com`.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The migration state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MigrationState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"warningsCount\",\"description\":\"The number of warnings encountered for this migration. To review the warnings, check the [Migration Log](https://docs.github.com/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"MigrationSource\",\"description\":\"A GitHub Enterprise Importer (GEI) migration source.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the MigrationSource object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The migration source name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"The migration source type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MigrationSourceType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The migration source URL, for example `https://github.com` or `https://monalisa.ghe.com`.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MigrationSourceType\",\"description\":\"Represents the different GitHub Enterprise Importer (GEI) migration sources.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"AZURE_DEVOPS\",\"description\":\"An Azure DevOps migration source.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BITBUCKET_SERVER\",\"description\":\"A Bitbucket Server migration source.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GITHUB_ARCHIVE\",\"description\":\"A GitHub Migration API source.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MigrationState\",\"description\":\"The GitHub Enterprise Importer (GEI) migration state.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NOT_STARTED\",\"description\":\"The migration has not started.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The migration has been queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The migration is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCEEDED\",\"description\":\"The migration has succeeded.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILED\",\"description\":\"The migration has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING_VALIDATION\",\"description\":\"The migration needs to have its credentials validated.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILED_VALIDATION\",\"description\":\"The migration has invalid credentials.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"description\":\"Represents a Milestone object on a given repository.\",\"fields\":[{\"name\":\"closed\",\"description\":\"Indicates if the object is closed (definition of closed may depend on type)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedIssueCount\",\"description\":\"Identifies the number of closed issues associated with the milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"Identifies the actor who created the milestone.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"Identifies the description of the milestone.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The HTML rendered description of the milestone using GitHub Flavored Markdown.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dueOn\",\"description\":\"Identifies the due date of the milestone.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Milestone object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issues\",\"description\":\"A list of issues associated with the milestone.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the issues by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the number of the milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"openIssueCount\",\"description\":\"Identifies the number of open issues associated with the milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"progressPercentage\",\"description\":\"Identifies the percentage complete for the milestone\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequests\",\"description\":\"A list of pull requests associated with the milestone.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this milestone\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the state of the milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MilestoneState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"Identifies the title of the milestone.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this milestone\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestoneConnection\",\"description\":\"The connection type for Milestone.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MilestoneEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestoneEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"MilestoneItem\",\"description\":\"Types that can be inside a Milestone.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MilestoneOrder\",\"description\":\"Ordering options for milestone connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order milestones by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MilestoneOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MilestoneOrderField\",\"description\":\"Properties by which milestone connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DUE_DATE\",\"description\":\"Order milestones by when they are due.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order milestones by when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order milestones by when they were last updated.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUMBER\",\"description\":\"Order milestones by their number.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"MilestoneState\",\"description\":\"The possible states of a milestone.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"A milestone that is still open.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"A milestone that has been closed.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"description\":\"Represents a 'milestoned' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the MilestonedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestoneTitle\",\"description\":\"Identifies the milestone title associated with the 'milestoned' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Object referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"MilestoneItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"description\":\"Entities that can be minimized.\",\"fields\":[{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MinimizeCommentInput\",\"description\":\"Autogenerated input type of MinimizeComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the subject to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"classifier\",\"description\":\"The classification of comment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReportedContentClassifiers\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MinimizeCommentPayload\",\"description\":\"Autogenerated return type of MinimizeComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedComment\",\"description\":\"The comment that was minimized.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MoveProjectCardInput\",\"description\":\"Autogenerated input type of MoveProjectCard\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"cardId\",\"description\":\"The id of the card to move.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"columnId\",\"description\":\"The id of the column to move it into.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"afterCardId\",\"description\":\"Place the new card after the card with this id. Pass null to place it at the top.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MoveProjectCardPayload\",\"description\":\"Autogenerated return type of MoveProjectCard.\",\"fields\":[{\"name\":\"cardEdge\",\"description\":\"The new edge of the moved card.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"MoveProjectColumnInput\",\"description\":\"Autogenerated input type of MoveProjectColumn\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"columnId\",\"description\":\"The id of the column to move.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"afterColumnId\",\"description\":\"Place the new column after the column with this id. Pass null to place it at the front.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MoveProjectColumnPayload\",\"description\":\"Autogenerated return type of MoveProjectColumn.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"columnEdge\",\"description\":\"The new edge of the moved column.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"MovedColumnsInProjectEvent\",\"description\":\"Represents a 'moved_columns_in_project' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the MovedColumnsInProjectEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousProjectColumnName\",\"description\":\"Column name the issue or pull request was moved from.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectCard\",\"description\":\"Project card referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectColumnName\",\"description\":\"Column name the issue or pull request was moved to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Mutation\",\"description\":\"The root query for implementing GraphQL mutations.\",\"fields\":[{\"name\":\"abortQueuedMigrations\",\"description\":\"Clear all of a customer's queued migrations\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AbortQueuedMigrations\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AbortQueuedMigrationsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AbortQueuedMigrationsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"abortRepositoryMigration\",\"description\":\"Abort a repository migration queued or in progress.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AbortRepositoryMigration\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AbortRepositoryMigrationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AbortRepositoryMigrationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"acceptEnterpriseAdministratorInvitation\",\"description\":\"Accepts a pending invitation for a user to become an administrator of an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AcceptEnterpriseAdministratorInvitation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptEnterpriseAdministratorInvitationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AcceptEnterpriseAdministratorInvitationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"acceptEnterpriseMemberInvitation\",\"description\":\"Accepts a pending invitation for a user to become an unaffiliated member of an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AcceptEnterpriseMemberInvitation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptEnterpriseMemberInvitationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AcceptEnterpriseMemberInvitationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"acceptTopicSuggestion\",\"description\":\"Applies a suggested topic to the repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AcceptTopicSuggestion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AcceptTopicSuggestionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AcceptTopicSuggestionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"accessUserNamespaceRepository\",\"description\":\"Access user namespace repository for a temporary duration.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AccessUserNamespaceRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AccessUserNamespaceRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AccessUserNamespaceRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addAssigneesToAssignable\",\"description\":\"Adds assignees to an assignable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddAssigneesToAssignable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddAssigneesToAssignableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddAssigneesToAssignablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addBlockedBy\",\"description\":\"Adds a 'blocked by' relationship to an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddBlockedBy\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddBlockedByInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddBlockedByPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addComment\",\"description\":\"Adds a comment to an Issue or Pull Request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addDiscussionComment\",\"description\":\"Adds a comment to a Discussion, possibly as a reply to another comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addDiscussionPollVote\",\"description\":\"Vote for an option in a discussion poll.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddDiscussionPollVote\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddDiscussionPollVoteInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddDiscussionPollVotePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addEnterpriseOrganizationMember\",\"description\":\"Adds enterprise members to an organization within the enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddEnterpriseOrganizationMember\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddEnterpriseOrganizationMemberInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddEnterpriseOrganizationMemberPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addEnterpriseSupportEntitlement\",\"description\":\"Adds a support entitlement to an enterprise member.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddEnterpriseSupportEntitlement\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddEnterpriseSupportEntitlementInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddEnterpriseSupportEntitlementPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addLabelsToLabelable\",\"description\":\"Adds labels to a labelable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddLabelsToLabelable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddLabelsToLabelableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddLabelsToLabelablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addProjectCard\",\"description\":\"Adds a card to a ProjectColumn. Either `contentId` or `note` must be provided but **not** both.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddProjectCard\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectCardInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddProjectCardPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"addProjectColumn\",\"description\":\"Adds a column to a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddProjectColumn\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectColumnInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddProjectColumnPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"addProjectV2DraftIssue\",\"description\":\"Creates a new draft issue and add it to a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddProjectV2DraftIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectV2DraftIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddProjectV2DraftIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addProjectV2ItemById\",\"description\":\"Links an existing content instance to a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddProjectV2ItemById\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddProjectV2ItemByIdInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddProjectV2ItemByIdPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addPullRequestReview\",\"description\":\"Adds a review to a Pull Request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddPullRequestReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addPullRequestReviewComment\",\"description\":\"Adds a comment to a review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddPullRequestReviewComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addPullRequestReviewThread\",\"description\":\"Adds a new thread to a pending Pull Request Review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddPullRequestReviewThread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewThreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewThreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addPullRequestReviewThreadReply\",\"description\":\"Adds a reply to an existing Pull Request Review Thread.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddPullRequestReviewThreadReply\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddPullRequestReviewThreadReplyInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddPullRequestReviewThreadReplyPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addReaction\",\"description\":\"Adds a reaction to a subject.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddReaction\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddReactionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddReactionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addStar\",\"description\":\"Adds a star to a Starrable.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddStar\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddStarInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddStarPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addSubIssue\",\"description\":\"Adds a sub-issue to a given issue\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddSubIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddSubIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddSubIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addUpvote\",\"description\":\"Add an upvote to a discussion or discussion comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddUpvote\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddUpvoteInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddUpvotePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"addVerifiableDomain\",\"description\":\"Adds a verifiable domain to an owning account.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for AddVerifiableDomain\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AddVerifiableDomainInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AddVerifiableDomainPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"approveDeployments\",\"description\":\"Approve all pending deployments under one or more environments\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ApproveDeployments\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ApproveDeploymentsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ApproveDeploymentsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"approveVerifiableDomain\",\"description\":\"Approve a verifiable domain for notification delivery.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ApproveVerifiableDomain\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ApproveVerifiableDomainInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ApproveVerifiableDomainPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"archiveProjectV2Item\",\"description\":\"Archives a ProjectV2Item\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ArchiveProjectV2Item\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ArchiveProjectV2ItemInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ArchiveProjectV2ItemPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"archiveRepository\",\"description\":\"Marks a repository as archived.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ArchiveRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ArchiveRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ArchiveRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cancelEnterpriseAdminInvitation\",\"description\":\"Cancels a pending invitation for an administrator to join an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CancelEnterpriseAdminInvitation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelEnterpriseAdminInvitationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CancelEnterpriseAdminInvitationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cancelEnterpriseMemberInvitation\",\"description\":\"Cancels a pending invitation for an unaffiliated member to join an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CancelEnterpriseMemberInvitation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelEnterpriseMemberInvitationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CancelEnterpriseMemberInvitationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cancelSponsorship\",\"description\":\"Cancel an active sponsorship.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CancelSponsorship\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CancelSponsorshipInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CancelSponsorshipPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"changeUserStatus\",\"description\":\"Update your status on GitHub.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ChangeUserStatus\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ChangeUserStatusInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ChangeUserStatusPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clearLabelsFromLabelable\",\"description\":\"Clears all labels from a labelable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ClearLabelsFromLabelable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClearLabelsFromLabelableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ClearLabelsFromLabelablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clearProjectV2ItemFieldValue\",\"description\":\"This mutation clears the value of a field for an item in a Project. Currently only text, number, date, assignees, labels, single-select, iteration and milestone fields are supported.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ClearProjectV2ItemFieldValue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClearProjectV2ItemFieldValueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ClearProjectV2ItemFieldValuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cloneProject\",\"description\":\"Creates a new project by cloning configuration from an existing project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CloneProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloneProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CloneProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"cloneTemplateRepository\",\"description\":\"Create a new repository with the same files and directory structure as a template repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CloneTemplateRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloneTemplateRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CloneTemplateRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closeDiscussion\",\"description\":\"Close a discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CloseDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloseDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CloseDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closeIssue\",\"description\":\"Close an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CloseIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CloseIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CloseIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closePullRequest\",\"description\":\"Close a pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ClosePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ClosePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ClosePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"convertProjectCardNoteToIssue\",\"description\":\"Convert a project note card to one associated with a newly created issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ConvertProjectCardNoteToIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertProjectCardNoteToIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ConvertProjectCardNoteToIssuePayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"convertProjectV2DraftIssueItemToIssue\",\"description\":\"Converts a projectV2 draft issue item to an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ConvertProjectV2DraftIssueItemToIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertProjectV2DraftIssueItemToIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ConvertProjectV2DraftIssueItemToIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"convertPullRequestToDraft\",\"description\":\"Converts a pull request to draft\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ConvertPullRequestToDraft\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ConvertPullRequestToDraftInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ConvertPullRequestToDraftPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"copyProjectV2\",\"description\":\"Copy a project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CopyProjectV2\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CopyProjectV2Input\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CopyProjectV2Payload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createAttributionInvitation\",\"description\":\"Invites a user to claim reattributable data\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateAttributionInvitation\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateAttributionInvitationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateAttributionInvitationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createBranchProtectionRule\",\"description\":\"Create a new branch protection rule\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateBranchProtectionRule\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateBranchProtectionRuleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateBranchProtectionRulePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createCheckRun\",\"description\":\"Create a check run.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateCheckRun\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCheckRunInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateCheckRunPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createCheckSuite\",\"description\":\"Create a check suite\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateCheckSuite\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCheckSuiteInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateCheckSuitePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createCommitOnBranch\",\"description\":\"Appends a commit to the given branch as the authenticated user.\\n\\nThis mutation creates a commit whose parent is the HEAD of the provided\\nbranch and also updates that branch to point to the new commit.\\nIt can be thought of as similar to `git commit`.\\n\\n### Locating a Branch\\n\\nCommits are appended to a `branch` of type `Ref`.\\nThis must refer to a git branch (i.e.  the fully qualified path must\\nbegin with `refs/heads/`, although including this prefix is optional.\\n\\nCallers may specify the `branch` to commit to either by its global node\\nID or by passing both of `repositoryNameWithOwner` and `refName`.  For\\nmore details see the documentation for `CommittableBranch`.\\n\\n### Describing Changes\\n\\n`fileChanges` are specified as a `FilesChanges` object describing\\n`FileAdditions` and `FileDeletions`.\\n\\nPlease see the documentation for `FileChanges` for more information on\\nhow to use this argument to describe any set of file changes.\\n\\n### Authorship\\n\\nSimilar to the web commit interface, this mutation does not support\\nspecifying the author or committer of the commit and will not add\\nsupport for this in the future.\\n\\nA commit created by a successful execution of this mutation will be\\nauthored by the owner of the credential which authenticates the API\\nrequest.  The committer will be identical to that of commits authored\\nusing the web interface.\\n\\nIf you need full control over author and committer information, please\\nuse the Git Database REST API instead.\\n\\n### Commit Signing\\n\\nCommits made using this mutation are automatically signed by GitHub if\\nsupported and will be marked as verified in the user interface.\\n\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateCommitOnBranch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateCommitOnBranchInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateCommitOnBranchPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createDeployment\",\"description\":\"Creates a new deployment event.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateDeployment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDeploymentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateDeploymentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createDeploymentStatus\",\"description\":\"Create a deployment status.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateDeploymentStatus\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDeploymentStatusInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateDeploymentStatusPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createDiscussion\",\"description\":\"Create a discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createEnterpriseOrganization\",\"description\":\"Creates an organization as part of an enterprise account. A personal access token used to create an organization is implicitly permitted to update the organization it created, if the organization is part of an enterprise that has SAML enabled or uses Enterprise Managed Users. If the organization is not part of such an enterprise, and instead has SAML enabled for it individually, the token will then require SAML authorization to continue working against that organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateEnterpriseOrganization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateEnterpriseOrganizationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateEnterpriseOrganizationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createEnvironment\",\"description\":\"Creates an environment or simply returns it if already exists.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateEnvironment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateEnvironmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateEnvironmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createIpAllowListEntry\",\"description\":\"Creates a new IP allow list entry.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateIpAllowListEntry\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIpAllowListEntryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateIpAllowListEntryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createIssue\",\"description\":\"Creates a new issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createIssueType\",\"description\":\"Creates a new issue type\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateIssueType\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateIssueTypeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateIssueTypePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createLabel\",\"description\":\"Creates a new label.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateLabel\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateLabelInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateLabelPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createLinkedBranch\",\"description\":\"Create a branch linked to an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateLinkedBranch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateLinkedBranchInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateLinkedBranchPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createMigrationSource\",\"description\":\"Creates a GitHub Enterprise Importer (GEI) migration source.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateMigrationSource\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateMigrationSourceInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateMigrationSourcePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createProject\",\"description\":\"Creates a new project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"createProjectV2\",\"description\":\"Creates a new project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateProjectV2\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2Input\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2Payload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createProjectV2Field\",\"description\":\"Create a new project field.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateProjectV2Field\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2FieldInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2FieldPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createProjectV2StatusUpdate\",\"description\":\"Creates a status update within a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateProjectV2StatusUpdate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateProjectV2StatusUpdateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateProjectV2StatusUpdatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createPullRequest\",\"description\":\"Create a new pull request\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreatePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreatePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreatePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createRef\",\"description\":\"Create a new Git Ref.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateRef\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRefInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateRefPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createRepository\",\"description\":\"Create a new repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createRepositoryRuleset\",\"description\":\"Create a repository ruleset\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateRepositoryRuleset\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateRepositoryRulesetInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateRepositoryRulesetPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createSavedNotificationThread\",\"description\":\"Adds a saved notification thread.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateSavedNotificationThread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSavedNotificationThreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateSavedNotificationThreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createSponsorsListing\",\"description\":\"Create a GitHub Sponsors profile to allow others to sponsor you or your organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateSponsorsListing\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorsListingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorsListingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createSponsorsTier\",\"description\":\"Create a new payment tier for your GitHub Sponsors profile.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateSponsorsTier\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorsTierInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorsTierPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createSponsorship\",\"description\":\"Start a new sponsorship of a maintainer in GitHub Sponsors, or reactivate a past sponsorship.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateSponsorship\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorshipInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorshipPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createSponsorships\",\"description\":\"Make many sponsorships for different sponsorable users or organizations at once. Can only sponsor those who have a public GitHub Sponsors profile.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateSponsorships\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateSponsorshipsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateSponsorshipsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createTeamDiscussion\",\"description\":\"Creates a new team discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateTeamDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateTeamDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateTeamDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createTeamDiscussionComment\",\"description\":\"Creates a new team discussion comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateTeamDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateTeamDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateTeamDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createUserList\",\"description\":\"Creates a new user list.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for CreateUserList\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CreateUserListInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CreateUserListPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"declineTopicSuggestion\",\"description\":\"Rejects a suggested topic for the repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeclineTopicSuggestion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeclineTopicSuggestionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeclineTopicSuggestionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteBranchProtectionRule\",\"description\":\"Delete a branch protection rule\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteBranchProtectionRule\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteBranchProtectionRuleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteBranchProtectionRulePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteDeployment\",\"description\":\"Deletes a deployment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteDeployment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDeploymentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteDeploymentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteDiscussion\",\"description\":\"Delete a discussion and all of its replies.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteDiscussionComment\",\"description\":\"Delete a discussion comment. If it has replies, wipe it instead.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteEnvironment\",\"description\":\"Deletes an environment\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteEnvironment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteEnvironmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteEnvironmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteIpAllowListEntry\",\"description\":\"Deletes an IP allow list entry.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteIpAllowListEntry\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIpAllowListEntryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteIpAllowListEntryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteIssue\",\"description\":\"Deletes an Issue object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteIssueComment\",\"description\":\"Deletes an IssueComment object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteIssueComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteIssueCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteIssueType\",\"description\":\"Delete an issue type\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteIssueType\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteIssueTypeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteIssueTypePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteLabel\",\"description\":\"Deletes a label.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteLabel\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteLabelInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteLabelPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteLinkedBranch\",\"description\":\"Unlink a branch from an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteLinkedBranch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteLinkedBranchInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteLinkedBranchPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletePackageVersion\",\"description\":\"Delete a package version.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeletePackageVersion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePackageVersionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeletePackageVersionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteProject\",\"description\":\"Deletes a project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"deleteProjectCard\",\"description\":\"Deletes a project card.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectCard\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectCardInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectCardPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"deleteProjectColumn\",\"description\":\"Deletes a project column.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectColumn\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectColumnInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectColumnPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"deleteProjectV2\",\"description\":\"Delete a project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectV2\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2Input\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2Payload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteProjectV2Field\",\"description\":\"Delete a project field.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectV2Field\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2FieldInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2FieldPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteProjectV2Item\",\"description\":\"Deletes an item from a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectV2Item\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2ItemInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2ItemPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteProjectV2StatusUpdate\",\"description\":\"Deletes a project status update.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectV2StatusUpdate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2StatusUpdateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2StatusUpdatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteProjectV2Workflow\",\"description\":\"Deletes a project workflow.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteProjectV2Workflow\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteProjectV2WorkflowInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteProjectV2WorkflowPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletePullRequestReview\",\"description\":\"Deletes a pull request review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeletePullRequestReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePullRequestReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeletePullRequestReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletePullRequestReviewComment\",\"description\":\"Deletes a pull request review comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeletePullRequestReviewComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeletePullRequestReviewCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeletePullRequestReviewCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteRef\",\"description\":\"Delete a Git Ref.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteRef\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteRefInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteRefPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteRepositoryRuleset\",\"description\":\"Delete a repository ruleset\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteRepositoryRuleset\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteRepositoryRulesetInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteRepositoryRulesetPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteSavedNotificationThread\",\"description\":\"Deletes a saved notification thread.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteSavedNotificationThread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteSavedNotificationThreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteSavedNotificationThreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteTeamDiscussion\",\"description\":\"Deletes a team discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteTeamDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteTeamDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteTeamDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteTeamDiscussionComment\",\"description\":\"Deletes a team discussion comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteTeamDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteTeamDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteTeamDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteUserList\",\"description\":\"Deletes a user list.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteUserList\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteUserListInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteUserListPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteVerifiableDomain\",\"description\":\"Deletes a verifiable domain.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DeleteVerifiableDomain\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeleteVerifiableDomainInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DeleteVerifiableDomainPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dequeuePullRequest\",\"description\":\"Remove a pull request from the merge queue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DequeuePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DequeuePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DequeuePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"disablePullRequestAutoMerge\",\"description\":\"Disable auto merge on the given pull request\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DisablePullRequestAutoMerge\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DisablePullRequestAutoMergeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DisablePullRequestAutoMergePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissPullRequestReview\",\"description\":\"Dismisses an approved or rejected pull request review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DismissPullRequestReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DismissPullRequestReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DismissPullRequestReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissRepositoryVulnerabilityAlert\",\"description\":\"Dismisses the Dependabot alert.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for DismissRepositoryVulnerabilityAlert\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DismissRepositoryVulnerabilityAlertInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DismissRepositoryVulnerabilityAlertPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enablePullRequestAutoMerge\",\"description\":\"Enable the default auto-merge on a pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for EnablePullRequestAutoMerge\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnablePullRequestAutoMergeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnablePullRequestAutoMergePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enqueuePullRequest\",\"description\":\"Add a pull request to the merge queue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for EnqueuePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnqueuePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnqueuePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"followOrganization\",\"description\":\"Follow an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for FollowOrganization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FollowOrganizationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"FollowOrganizationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"followUser\",\"description\":\"Follow a user.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for FollowUser\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FollowUserInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"FollowUserPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"grantEnterpriseOrganizationsMigratorRole\",\"description\":\"Grant the migrator role to a user for all organizations under an enterprise account.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for GrantEnterpriseOrganizationsMigratorRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"GrantEnterpriseOrganizationsMigratorRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GrantEnterpriseOrganizationsMigratorRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"grantMigratorRole\",\"description\":\"Grant the migrator role to a user or a team.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for GrantMigratorRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"GrantMigratorRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GrantMigratorRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"importProject\",\"description\":\"Creates a new project by importing columns and a list of issues/PRs.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ImportProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ImportProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ImportProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"inviteEnterpriseAdmin\",\"description\":\"Invite someone to become an administrator of the enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for InviteEnterpriseAdmin\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"InviteEnterpriseAdminInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"InviteEnterpriseAdminPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inviteEnterpriseMember\",\"description\":\"Invite someone to become an unaffiliated member of the enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for InviteEnterpriseMember\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"InviteEnterpriseMemberInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"InviteEnterpriseMemberPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"linkProjectV2ToRepository\",\"description\":\"Links a project to a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for LinkProjectV2ToRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkProjectV2ToRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LinkProjectV2ToRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"linkProjectV2ToTeam\",\"description\":\"Links a project to a team.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for LinkProjectV2ToTeam\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkProjectV2ToTeamInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LinkProjectV2ToTeamPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"linkRepositoryToProject\",\"description\":\"Creates a repository link for a project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for LinkRepositoryToProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LinkRepositoryToProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LinkRepositoryToProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"lockLockable\",\"description\":\"Lock a lockable object\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for LockLockable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LockLockableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LockLockablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markAllNotifications\",\"description\":\"Mark all notifications as the state is passed\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkAllNotifications\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkAllNotificationsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkAllNotificationsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markDiscussionCommentAsAnswer\",\"description\":\"Mark a discussion comment as the chosen answer for discussions in an answerable category.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkDiscussionCommentAsAnswer\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkDiscussionCommentAsAnswerInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkDiscussionCommentAsAnswerPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markFileAsViewed\",\"description\":\"Mark a pull request file as viewed\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkFileAsViewed\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkFileAsViewedInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkFileAsViewedPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationAsDone\",\"description\":\"Marks a notification as done\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationAsDone\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsDoneInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsDonePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationAsRead\",\"description\":\"Marks a notification as read\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationAsRead\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsReadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsReadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationAsUndone\",\"description\":\"Marks a notification as undone\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationAsUndone\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsUndoneInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsUndonePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationAsUnread\",\"description\":\"Marks a notification as unread\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationAsUnread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationAsUnreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationAsUnreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationSubjectAsRead\",\"description\":\"Marks a notification as read\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationSubjectAsRead\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationSubjectAsReadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationSubjectAsReadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationsAsDone\",\"description\":\"Marks a notification as done\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationsAsDone\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsDoneInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsDonePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationsAsRead\",\"description\":\"Marks multiple notifications as read\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationsAsRead\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsReadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsReadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationsAsUndone\",\"description\":\"Marks a notification as undone\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationsAsUndone\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsUndoneInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsUndonePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markNotificationsAsUnread\",\"description\":\"Marks notifications as unread\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkNotificationsAsUnread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkNotificationsAsUnreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkNotificationsAsUnreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markProjectV2AsTemplate\",\"description\":\"Mark a project as a template. Note that only projects which are owned by an Organization can be marked as a template.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkProjectV2AsTemplate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkProjectV2AsTemplateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkProjectV2AsTemplatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"markPullRequestReadyForReview\",\"description\":\"Marks a pull request ready for review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MarkPullRequestReadyForReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MarkPullRequestReadyForReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarkPullRequestReadyForReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeBranch\",\"description\":\"Merge a head into a branch.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MergeBranch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergeBranchInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeBranchPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergePullRequest\",\"description\":\"Merge a pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MergePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizeComment\",\"description\":\"Minimizes a comment on an Issue, Commit, Pull Request, or Gist\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MinimizeComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MinimizeCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MinimizeCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"moveProjectCard\",\"description\":\"Moves a project card to another place.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MoveProjectCard\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MoveProjectCardInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MoveProjectCardPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"moveProjectColumn\",\"description\":\"Moves a project column to another place.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for MoveProjectColumn\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MoveProjectColumnInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MoveProjectColumnPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"pinEnvironment\",\"description\":\"Pin an environment to a repository\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for PinEnvironment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinEnvironmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinEnvironmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinIssue\",\"description\":\"Pin an issue to a repository\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for PinIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishSponsorsTier\",\"description\":\"Publish an existing sponsorship tier that is currently still a draft to a GitHub Sponsors profile.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for PublishSponsorsTier\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PublishSponsorsTierInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PublishSponsorsTierPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"regenerateEnterpriseIdentityProviderRecoveryCodes\",\"description\":\"Regenerates the identity provider recovery codes for an enterprise\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RegenerateEnterpriseIdentityProviderRecoveryCodes\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RegenerateEnterpriseIdentityProviderRecoveryCodesInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RegenerateEnterpriseIdentityProviderRecoveryCodesPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"regenerateVerifiableDomainToken\",\"description\":\"Regenerates a verifiable domain's verification token.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RegenerateVerifiableDomainToken\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RegenerateVerifiableDomainTokenInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RegenerateVerifiableDomainTokenPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rejectDeployments\",\"description\":\"Reject all pending deployments under one or more environments\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RejectDeployments\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RejectDeploymentsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RejectDeploymentsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeAssigneesFromAssignable\",\"description\":\"Removes assignees from an assignable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveAssigneesFromAssignable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveAssigneesFromAssignableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveAssigneesFromAssignablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeBlockedBy\",\"description\":\"Removes a 'blocked by' relationship from an issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveBlockedBy\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveBlockedByInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveBlockedByPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeEnterpriseAdmin\",\"description\":\"Removes an administrator from the enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveEnterpriseAdmin\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseAdminInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseAdminPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeEnterpriseIdentityProvider\",\"description\":\"Removes the identity provider from an enterprise. Owners of enterprises both with and without Enterprise Managed Users may use this mutation.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveEnterpriseIdentityProvider\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseIdentityProviderInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseIdentityProviderPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeEnterpriseMember\",\"description\":\"Completely removes a user from the enterprise\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveEnterpriseMember\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseMemberInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseMemberPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeEnterpriseOrganization\",\"description\":\"Removes an organization from the enterprise\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveEnterpriseOrganization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseOrganizationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseOrganizationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeEnterpriseSupportEntitlement\",\"description\":\"Removes a support entitlement from an enterprise member.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveEnterpriseSupportEntitlement\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseSupportEntitlementInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseSupportEntitlementPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeLabelsFromLabelable\",\"description\":\"Removes labels from a Labelable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveLabelsFromLabelable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveLabelsFromLabelableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveLabelsFromLabelablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeOutsideCollaborator\",\"description\":\"Removes outside collaborator from all repositories in an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveOutsideCollaborator\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveOutsideCollaboratorInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveOutsideCollaboratorPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeReaction\",\"description\":\"Removes a reaction from a subject.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveReaction\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveReactionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveReactionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeStar\",\"description\":\"Removes a star from a Starrable.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveStar\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveStarInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveStarPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeSubIssue\",\"description\":\"Removes a sub-issue from a given issue\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveSubIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveSubIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveSubIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removeUpvote\",\"description\":\"Remove an upvote to a discussion or discussion comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RemoveUpvote\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveUpvoteInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RemoveUpvotePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reopenDiscussion\",\"description\":\"Reopen a discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReopenDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReopenDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reopenIssue\",\"description\":\"Reopen a issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReopenIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReopenIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reopenPullRequest\",\"description\":\"Reopen a pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReopenPullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenPullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReopenPullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reorderEnvironment\",\"description\":\"Reorder a pinned repository environment\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReorderEnvironment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReorderEnvironmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReorderEnvironmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"replaceActorsForAssignable\",\"description\":\"Replaces all actors for assignable object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReplaceActorsForAssignable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReplaceActorsForAssignableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReplaceActorsForAssignablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reprioritizeSubIssue\",\"description\":\"Reprioritizes a sub-issue to a different position in the parent list.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ReprioritizeSubIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReprioritizeSubIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReprioritizeSubIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requestReviews\",\"description\":\"Set review requests on a pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RequestReviews\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequestReviewsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RequestReviewsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rerequestCheckSuite\",\"description\":\"Rerequests an existing check suite.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RerequestCheckSuite\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RerequestCheckSuiteInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RerequestCheckSuitePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resolveReviewThread\",\"description\":\"Marks a review thread as resolved.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for ResolveReviewThread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ResolveReviewThreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ResolveReviewThreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"retireSponsorsTier\",\"description\":\"Retire a published payment tier from your GitHub Sponsors profile so it cannot be used to start new sponsorships.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RetireSponsorsTier\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RetireSponsorsTierInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RetireSponsorsTierPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revertPullRequest\",\"description\":\"Create a pull request that reverts the changes from a merged pull request.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RevertPullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevertPullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RevertPullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revokeEnterpriseOrganizationsMigratorRole\",\"description\":\"Revoke the migrator role to a user for all organizations under an enterprise account.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RevokeEnterpriseOrganizationsMigratorRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevokeEnterpriseOrganizationsMigratorRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RevokeEnterpriseOrganizationsMigratorRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revokeMigratorRole\",\"description\":\"Revoke the migrator role from a user or a team.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for RevokeMigratorRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevokeMigratorRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RevokeMigratorRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"setEnterpriseIdentityProvider\",\"description\":\"Creates or updates the identity provider for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for SetEnterpriseIdentityProvider\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetEnterpriseIdentityProviderInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SetEnterpriseIdentityProviderPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"setOrganizationInteractionLimit\",\"description\":\"Set an organization level interaction limit for an organization's public repositories.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for SetOrganizationInteractionLimit\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetOrganizationInteractionLimitInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SetOrganizationInteractionLimitPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"setRepositoryInteractionLimit\",\"description\":\"Sets an interaction limit setting for a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for SetRepositoryInteractionLimit\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetRepositoryInteractionLimitInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SetRepositoryInteractionLimitPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"setUserInteractionLimit\",\"description\":\"Set a user level interaction limit for an user's public repositories.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for SetUserInteractionLimit\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetUserInteractionLimitInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SetUserInteractionLimitPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startOrganizationMigration\",\"description\":\"Starts a GitHub Enterprise Importer organization migration.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for StartOrganizationMigration\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StartOrganizationMigrationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StartOrganizationMigrationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startRepositoryMigration\",\"description\":\"Starts a GitHub Enterprise Importer (GEI) repository migration.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for StartRepositoryMigration\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StartRepositoryMigrationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StartRepositoryMigrationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"submitPullRequestReview\",\"description\":\"Submits a pending pull request review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for SubmitPullRequestReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SubmitPullRequestReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SubmitPullRequestReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"transferEnterpriseOrganization\",\"description\":\"Transfer an organization from one enterprise to another enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for TransferEnterpriseOrganization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TransferEnterpriseOrganizationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TransferEnterpriseOrganizationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"transferIssue\",\"description\":\"Transfer an issue to a different repository\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for TransferIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TransferIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TransferIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unarchiveProjectV2Item\",\"description\":\"Unarchives a ProjectV2Item\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnarchiveProjectV2Item\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnarchiveProjectV2ItemInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnarchiveProjectV2ItemPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unarchiveRepository\",\"description\":\"Unarchives a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnarchiveRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnarchiveRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnarchiveRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unfollowOrganization\",\"description\":\"Unfollow an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnfollowOrganization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnfollowOrganizationInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnfollowOrganizationPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unfollowUser\",\"description\":\"Unfollow a user.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnfollowUser\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnfollowUserInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnfollowUserPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unlinkProjectV2FromRepository\",\"description\":\"Unlinks a project from a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnlinkProjectV2FromRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkProjectV2FromRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnlinkProjectV2FromRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unlinkProjectV2FromTeam\",\"description\":\"Unlinks a project to a team.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnlinkProjectV2FromTeam\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkProjectV2FromTeamInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnlinkProjectV2FromTeamPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unlinkRepositoryFromProject\",\"description\":\"Deletes a repository link from a project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnlinkRepositoryFromProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkRepositoryFromProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnlinkRepositoryFromProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"unlockLockable\",\"description\":\"Unlock a lockable object\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnlockLockable\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlockLockableInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnlockLockablePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unmarkDiscussionCommentAsAnswer\",\"description\":\"Unmark a discussion comment as the chosen answer for discussions in an answerable category.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnmarkDiscussionCommentAsAnswer\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkDiscussionCommentAsAnswerInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnmarkDiscussionCommentAsAnswerPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unmarkFileAsViewed\",\"description\":\"Unmark a pull request file as viewed\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnmarkFileAsViewed\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkFileAsViewedInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnmarkFileAsViewedPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unmarkIssueAsDuplicate\",\"description\":\"Unmark an issue as a duplicate of another issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnmarkIssueAsDuplicate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkIssueAsDuplicateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnmarkIssueAsDuplicatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unmarkProjectV2AsTemplate\",\"description\":\"Unmark a project as a template.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnmarkProjectV2AsTemplate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkProjectV2AsTemplateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnmarkProjectV2AsTemplatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unminimizeComment\",\"description\":\"Unminimizes a comment on an Issue, Commit, Pull Request, or Gist\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnminimizeComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnminimizeCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnminimizeCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unpinIssue\",\"description\":\"Unpin a pinned issue from a repository\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnpinIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnpinIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnpinIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unresolveReviewThread\",\"description\":\"Marks a review thread as unresolved.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnresolveReviewThread\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnresolveReviewThreadInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnresolveReviewThreadPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unsubscribeFromNotifications\",\"description\":\"Unsubscribes from notifications\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UnsubscribeFromNotifications\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnsubscribeFromNotificationsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UnsubscribeFromNotificationsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateBranchProtectionRule\",\"description\":\"Update a branch protection rule\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateBranchProtectionRule\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateBranchProtectionRuleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateBranchProtectionRulePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateCheckRun\",\"description\":\"Update a check run\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateCheckRun\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateCheckRunInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateCheckRunPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateCheckSuitePreferences\",\"description\":\"Modifies the settings of an existing check suite\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateCheckSuitePreferences\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateCheckSuitePreferencesInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateCheckSuitePreferencesPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateDiscussion\",\"description\":\"Update a discussion\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateDiscussionComment\",\"description\":\"Update the contents of a comment on a Discussion\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseAdministratorRole\",\"description\":\"Updates the role of an enterprise administrator.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseAdministratorRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseAdministratorRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseAdministratorRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseAllowPrivateRepositoryForkingSetting\",\"description\":\"Sets whether private repository forks are enabled for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseAllowPrivateRepositoryForkingSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseDefaultRepositoryPermissionSetting\",\"description\":\"Sets the base repository permission for organizations in an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseDefaultRepositoryPermissionSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseDefaultRepositoryPermissionSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseDefaultRepositoryPermissionSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseDeployKeySetting\",\"description\":\"Sets whether deploy keys are allowed to be created and used for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseDeployKeySetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseDeployKeySettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseDeployKeySettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanChangeRepositoryVisibilitySetting\",\"description\":\"Sets whether organization members with admin permissions on a repository can change repository visibility.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanCreateRepositoriesSetting\",\"description\":\"Sets the members can create repositories setting for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanCreateRepositoriesSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanCreateRepositoriesSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanDeleteIssuesSetting\",\"description\":\"Sets the members can delete issues setting for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanDeleteIssuesSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteIssuesSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteIssuesSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanDeleteRepositoriesSetting\",\"description\":\"Sets the members can delete repositories setting for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanDeleteRepositoriesSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanInviteCollaboratorsSetting\",\"description\":\"Sets whether members can invite collaborators are enabled for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanInviteCollaboratorsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanMakePurchasesSetting\",\"description\":\"Sets whether or not an organization owner can make purchases.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanMakePurchasesSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanMakePurchasesSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanMakePurchasesSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanUpdateProtectedBranchesSetting\",\"description\":\"Sets the members can update protected branches setting for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseMembersCanViewDependencyInsightsSetting\",\"description\":\"Sets the members can view dependency insights for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseMembersCanViewDependencyInsightsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseOrganizationProjectsSetting\",\"description\":\"Sets whether organization projects are enabled for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseOrganizationProjectsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseOrganizationProjectsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseOrganizationProjectsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseOwnerOrganizationRole\",\"description\":\"Updates the role of an enterprise owner with an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseOwnerOrganizationRole\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseOwnerOrganizationRoleInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseOwnerOrganizationRolePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseProfile\",\"description\":\"Updates an enterprise's profile.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseProfile\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseProfileInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseProfilePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseRepositoryProjectsSetting\",\"description\":\"Sets whether repository projects are enabled for a enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseRepositoryProjectsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseRepositoryProjectsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseRepositoryProjectsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseTeamDiscussionsSetting\",\"description\":\"Sets whether team discussions are enabled for an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseTeamDiscussionsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTeamDiscussionsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTeamDiscussionsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseTwoFactorAuthenticationDisallowedMethodsSetting\",\"description\":\"Sets the two-factor authentication methods that users of an enterprise may not use.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnterpriseTwoFactorAuthenticationRequiredSetting\",\"description\":\"Sets whether two factor authentication is required for all users in an enterprise.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnterpriseTwoFactorAuthenticationRequiredSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateEnvironment\",\"description\":\"Updates an environment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateEnvironment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnvironmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateEnvironmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIpAllowListEnabledSetting\",\"description\":\"Sets whether an IP allow list is enabled on an owner.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIpAllowListEnabledSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListEnabledSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListEnabledSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIpAllowListEntry\",\"description\":\"Updates an IP allow list entry.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIpAllowListEntry\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListEntryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListEntryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIpAllowListForInstalledAppsEnabledSetting\",\"description\":\"Sets whether IP allow list configuration for installed GitHub Apps is enabled on an owner.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIpAllowListForInstalledAppsEnabledSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListForInstalledAppsEnabledSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListForInstalledAppsEnabledSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIssue\",\"description\":\"Updates an Issue.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIssueComment\",\"description\":\"Updates an IssueComment object.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIssueComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIssueIssueType\",\"description\":\"Updates the issue type on an issue\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIssueIssueType\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueIssueTypeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueIssueTypePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateIssueType\",\"description\":\"Update an issue type\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateIssueType\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueTypeInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueTypePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateLabel\",\"description\":\"Updates an existing label.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateLabel\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateLabelInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateLabelPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateNotificationRestrictionSetting\",\"description\":\"Update the setting to restrict notifications to only verified or approved domains available to an owner.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateNotificationRestrictionSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateNotificationRestrictionSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateNotificationRestrictionSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateOrganizationAllowPrivateRepositoryForkingSetting\",\"description\":\"Sets whether private repository forks are enabled for an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateOrganizationAllowPrivateRepositoryForkingSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateOrganizationAllowPrivateRepositoryForkingSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateOrganizationWebCommitSignoffSetting\",\"description\":\"Sets whether contributors are required to sign off on web-based commits for repositories in an organization.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateOrganizationWebCommitSignoffSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateOrganizationWebCommitSignoffSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateOrganizationWebCommitSignoffSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatePatreonSponsorability\",\"description\":\"Toggle the setting for your GitHub Sponsors profile that allows other GitHub accounts to sponsor you on GitHub while paying for the sponsorship on Patreon. Only applicable when you have a GitHub Sponsors profile and have connected your GitHub account with Patreon.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdatePatreonSponsorability\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePatreonSponsorabilityInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdatePatreonSponsorabilityPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProject\",\"description\":\"Updates an existing project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProject\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updateProjectCard\",\"description\":\"Updates an existing project card.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectCard\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectCardInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectCardPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updateProjectColumn\",\"description\":\"Updates an existing project column.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectColumn\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectColumnInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectColumnPayload\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updateProjectV2\",\"description\":\"Updates an existing project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2Input\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2Payload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2Collaborators\",\"description\":\"Update the collaborators on a team or a project\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2Collaborators\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2CollaboratorsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2CollaboratorsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2DraftIssue\",\"description\":\"Updates a draft issue within a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2DraftIssue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2DraftIssueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2DraftIssuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2Field\",\"description\":\"Update a project field.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2Field\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2FieldInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2FieldPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2ItemFieldValue\",\"description\":\"This mutation updates the value of a field for an item in a Project. Currently only single-select, text, number, date, and iteration fields are supported.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2ItemFieldValue\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2ItemFieldValueInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2ItemFieldValuePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2ItemPosition\",\"description\":\"This mutation updates the position of the item in the project, where the position represents the priority of an item.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2ItemPosition\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2ItemPositionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2ItemPositionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateProjectV2StatusUpdate\",\"description\":\"Updates a status update within a Project.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateProjectV2StatusUpdate\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2StatusUpdateInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2StatusUpdatePayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatePullRequest\",\"description\":\"Update a pull request\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdatePullRequest\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatePullRequestBranch\",\"description\":\"Merge or Rebase HEAD from upstream branch into pull request branch\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdatePullRequestBranch\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestBranchInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestBranchPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatePullRequestReview\",\"description\":\"Updates the body of a pull request review.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdatePullRequestReview\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestReviewInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestReviewPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatePullRequestReviewComment\",\"description\":\"Updates a pull request review comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdatePullRequestReviewComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestReviewCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestReviewCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateRef\",\"description\":\"Update a Git Ref.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateRef\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRefInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateRefPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateRefs\",\"description\":\"Creates, updates and/or deletes multiple refs in a repository.\\n\\nThis mutation takes a list of `RefUpdate`s and performs these updates\\non the repository. All updates are performed atomically, meaning that\\nif one of them is rejected, no other ref will be modified.\\n\\n`RefUpdate.beforeOid` specifies that the given reference needs to point\\nto the given value before performing any updates. A value of\\n`0000000000000000000000000000000000000000` can be used to verify that\\nthe references should not exist.\\n\\n`RefUpdate.afterOid` specifies the value that the given reference\\nwill point to after performing all updates. A value of\\n`0000000000000000000000000000000000000000` can be used to delete a\\nreference.\\n\\nIf `RefUpdate.force` is set to `true`, a non-fast-forward updates\\nfor the given reference will be allowed.\\n\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateRefs\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRefsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateRefsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateRepository\",\"description\":\"Update information about a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateRepositoryRuleset\",\"description\":\"Update a repository ruleset\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateRepositoryRuleset\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryRulesetInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryRulesetPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateRepositoryWebCommitSignoffSetting\",\"description\":\"Sets whether contributors are required to sign off on web-based commits for a repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateRepositoryWebCommitSignoffSetting\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryWebCommitSignoffSettingInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryWebCommitSignoffSettingPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateSponsorshipPreferences\",\"description\":\"Change visibility of your sponsorship and opt in or out of email updates from the maintainer.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateSponsorshipPreferences\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateSponsorshipPreferencesInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateSponsorshipPreferencesPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateSubscription\",\"description\":\"Updates the state for subscribable subjects.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateSubscription\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateSubscriptionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateSubscriptionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateTeamDiscussion\",\"description\":\"Updates a team discussion.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateTeamDiscussion\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamDiscussionInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamDiscussionPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateTeamDiscussionComment\",\"description\":\"Updates a discussion comment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateTeamDiscussionComment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamDiscussionCommentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamDiscussionCommentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateTeamReviewAssignment\",\"description\":\"Updates team review assignment.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateTeamReviewAssignment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamReviewAssignmentInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamReviewAssignmentPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateTeamsRepository\",\"description\":\"Update team repository.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateTeamsRepository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamsRepositoryInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamsRepositoryPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateTopics\",\"description\":\"Replaces the repository's topics with the given topics.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateTopics\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTopicsInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateTopicsPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateUserList\",\"description\":\"Updates an existing user list.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateUserList\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateUserListInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateUserListPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updateUserListsForItem\",\"description\":\"Updates which of the viewer's lists an item belongs to\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for UpdateUserListsForItem\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateUserListsForItemInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UpdateUserListsForItemPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifyVerifiableDomain\",\"description\":\"Verify that a verifiable domain has the expected DNS record.\",\"args\":[{\"name\":\"input\",\"description\":\"Parameters for VerifyVerifiableDomain\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"VerifyVerifiableDomainInput\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifyVerifiableDomainPayload\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"description\":\"An object with an ID.\",\"fields\":[{\"name\":\"id\",\"description\":\"ID of the object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AddedToMergeQueueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeDisabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoRebaseEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoSquashEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeFailedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeSucceededEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Blob\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassForcePushAllowance\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BypassPullRequestAllowance\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CWE\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CodeOfConduct\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommentDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Comparison\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertToDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedFromDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedNoteToIssueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedToDiscussionEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployKey\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentEnvironmentChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentStatus\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DisconnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPoll\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionPollOption\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DraftIssue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseRepositoryInfo\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerInstallation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccount\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountEmail\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseServerUserAccountsUpload\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"EnterpriseUserAccount\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentity\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefRestoredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"License\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LinkedBranch\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MemberFeatureRequestNotification\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MentionedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MigrationSource\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MovedColumnsInProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"NotificationThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OIDCProvider\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgBlockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUnblockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationIdentityProvider\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationMigration\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Package\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageFile\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageTag\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedIssue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldDateValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldIterationValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldNumberValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldSingleSelectValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldTextValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemStatusChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationField\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectField\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2View\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Workflow\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PublicKey\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Push\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PushAllowance\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Query\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReadyForReviewEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseAsset\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromMergeQueueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryDependabotAlertsThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRule\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActor\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopic\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowance\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SavedReply\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivity\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsListingFeaturedItem\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletter\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Status\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollup\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Tag\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Tree\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnpinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserContentEdit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Workflow\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunFile\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"NotificationReason\",\"description\":\"The reason you received a notification about a subject.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ASSIGN\",\"description\":\"You were assigned to the Issue/PR.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTHOR\",\"description\":\"You created the thread.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMENT\",\"description\":\"You commented on the thread.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INVITATION\",\"description\":\"You accepted an invitation to contribute to the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MANUAL\",\"description\":\"You subscribed to the thread (via an Issue or Pull Request).\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MENTION\",\"description\":\"You were specifically @mentioned in the content.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEW_REQUESTED\",\"description\":\"You were requested for review.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SECURITY_ADVISORY_CREDIT\",\"description\":\"You were given credit for contributing to a Security Advisory.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SECURITY_ALERT\",\"description\":\"You have access to the notification subject's Dependabot alerts.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STATE_CHANGE\",\"description\":\"You changed the thread state (for example, closing an Issue or merging a Pull Request).\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED\",\"description\":\"You are watching the subject of the notification.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TEAM_MENTION\",\"description\":\"You were on a team that was mentioned.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CI_ACTIVITY\",\"description\":\"You are subscribed to continuous integration activity.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"APPROVAL_REQUESTED\",\"description\":\"You were requested for review for deployment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAVED\",\"description\":\"You saved this notification\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READY_FOR_REVIEW\",\"description\":\"A pull request you're subscribed to was marked ready for review.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MEMBER_FEATURE_REQUESTED\",\"description\":\"New requests from members.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"NotificationRestrictionSettingValue\",\"description\":\"The possible values for the notification restriction setting.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ENABLED\",\"description\":\"The setting is enabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The setting is disabled for the owner.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"NotificationStatus\",\"description\":\"The possible states of a notification.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"READ\",\"description\":\"A notification is read\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNREAD\",\"description\":\"A notification is unread\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ARCHIVED\",\"description\":\"A notification is archived\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DONE\",\"description\":\"A notification is done\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"NotificationThread\",\"description\":\"Represents a notification thread for the viewer.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the NotificationThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isArchived\",\"description\":\"Archived state of the notification.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDone\",\"description\":\"Done state of the notification.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSaved\",\"description\":\"Whether a notification has been saved\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isStarred\",\"description\":\"Whether a notification has been starred\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUnread\",\"description\":\"Unread state of the notification.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastReadAt\",\"description\":\"The last time that notifications were read for this thread.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastSummarizedAt\",\"description\":\"The last time that notifications were updated for this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastUpdatedAt\",\"description\":\"The last time that a notification was received on this thread for the current user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"list\",\"description\":\"The notification's list.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"NotificationsList\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Null values are possible for this field. Use the `optionalList` field instead. Removal on 2026-01-01 UTC.\"},{\"name\":\"listId\",\"description\":\"The notification's list id\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"listType\",\"description\":\"The notification's list type\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oldestUnreadItemAnchor\",\"description\":\"The oldest unread author internal anchor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"optionalList\",\"description\":\"The notification's list.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"NotificationsList\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"optionalSubject\",\"description\":\"The notification's subject.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"NotificationsSubject\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reason\",\"description\":\"The reason a notification was received.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"NotificationReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"recentParticipants\",\"description\":\"The last 3 recent participants.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The notification's subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"NotificationsSubject\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Null values are possible for this field. Use the `optionalSubject` field instead. Removal on 2026-01-01 UTC.\"},{\"name\":\"subscriptionStatus\",\"description\":\"Subscription status for the thread\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationThreadSubscriptionState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summaryId\",\"description\":\"The notification's rollup summary id\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summaryItemAuthor\",\"description\":\"The author of the item being used to summarize the thread.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summaryItemBody\",\"description\":\"The body text of the item being used to summarize the thread.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"threadId\",\"description\":\"The notification's thread id\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"threadType\",\"description\":\"The notification's thread type\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The notification's title\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unreadItemsCount\",\"description\":\"The number of unread items.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for the notification thread's subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"NotificationThreadConnection\",\"description\":\"A list of notification threads.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"NotificationThreadEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"NotificationThread\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"NotificationThreadEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"NotificationThread\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"NotificationThreadFilters\",\"description\":\"Ways in which to filter lists of notification threads.\",\"fields\":null,\"inputFields\":[{\"name\":\"statuses\",\"description\":\"Only return notifications where the status is in the list.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationStatus\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"reasons\",\"description\":\"Only return notification threads where the reason is in the list\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationReason\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"listIds\",\"description\":\"Only return notification threads where the list is in the given list\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"starredOnly\",\"description\":\"Only return starred notifications. All other filters will be ignored.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"savedOnly\",\"description\":\"Only return saved notifications. All other filters will be ignored.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"threadTypes\",\"description\":\"Only return matching thread types\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"NotificationThreadSubscriptionState\",\"description\":\"The possible subscription states of a notification thread.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LIST_IGNORED\",\"description\":\"The thread's list is ignored.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LIST_SUBSCRIBED\",\"description\":\"The thread's list is subscribed to.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THREAD_SUBSCRIBED\",\"description\":\"The thread is subscribed to.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THREAD_TYPE_SUBSCRIBED\",\"description\":\"The thread's type is subscribed to.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNSUBSCRIBED\",\"description\":\"The thread is not subscribed to.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"NotificationsList\",\"description\":\"The parent object that the notification thread's subject belongs to.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"UNION\",\"name\":\"NotificationsSubject\",\"description\":\"The notification's subject.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MemberFeatureRequestNotification\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryDependabotAlertsThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitation\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"OIDCProvider\",\"description\":\"An OIDC identity provider configured to provision identities for an enterprise. Visible to enterprise owners or enterprise owners' personal access tokens (classic) with read:enterprise or admin:enterprise scope.\",\"fields\":[{\"name\":\"enterprise\",\"description\":\"The enterprise this identity provider belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"externalIdentities\",\"description\":\"ExternalIdentities provisioned by this identity provider.\",\"args\":[{\"name\":\"membersOnly\",\"description\":\"Filter to external identities with valid org membership only\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"Filter to external identities with the users login\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userName\",\"description\":\"Filter to external identities with the users userName/NameID attribute\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the OIDCProvider object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"providerType\",\"description\":\"The OIDC identity provider type\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OIDCProviderType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tenantId\",\"description\":\"The id of the tenant this provider is attached to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OIDCProviderType\",\"description\":\"The OIDC identity provider type\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"AAD\",\"description\":\"Azure Active Directory\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"description\":\"Metadata for an audit entry with action oauth_application.*\",\"fields\":[{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"description\":\"Audit log entry for a oauth_application.create event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"applicationUrl\",\"description\":\"The application URL of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"callbackUrl\",\"description\":\"The callback URL of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OauthApplicationCreateAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"rateLimit\",\"description\":\"The rate limit of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"state\",\"description\":\"The state of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OauthApplicationCreateAuditEntryState\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OauthApplicationCreateAuditEntryState\",\"description\":\"The state of an OAuth application when it was created.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ACTIVE\",\"description\":\"The OAuth application was active and allowed to have OAuth Accesses.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUSPENDED\",\"description\":\"The OAuth application was suspended from generating OAuth Accesses due to abuse or security concerns.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING_DELETION\",\"description\":\"The OAuth application was in the process of being deleted.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"description\":\"The corresponding operation type for the action\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ACCESS\",\"description\":\"An existing resource was accessed\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTHENTICATION\",\"description\":\"A resource performed an authentication event\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATE\",\"description\":\"A new resource was created\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MODIFY\",\"description\":\"An existing resource was modified\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVE\",\"description\":\"An existing resource was removed\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RESTORE\",\"description\":\"An existing resource was restored\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRANSFER\",\"description\":\"An existing resource was transferred between multiple resources\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"description\":\"Possible directions in which to order a list of items when provided an `orderBy` argument.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ASC\",\"description\":\"Specifies an ascending order for a given `orderBy` argument.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DESC\",\"description\":\"Specifies a descending order for a given `orderBy` argument.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddBillingManagerAuditEntry\",\"description\":\"Audit log entry for a org.add_billing_manager\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgAddBillingManagerAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitationEmail\",\"description\":\"The email address used to invite a billing manager for the organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddMemberAuditEntry\",\"description\":\"Audit log entry for a org.add_member\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgAddMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"permission\",\"description\":\"The permission level of the member added to the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgAddMemberAuditEntryPermission\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgAddMemberAuditEntryPermission\",\"description\":\"The permissions available to members on an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"READ\",\"description\":\"Can read and clone repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Can read, clone, push, and add collaborators to repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgBlockUserAuditEntry\",\"description\":\"Audit log entry for a org.block_user\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUser\",\"description\":\"The blocked user.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserName\",\"description\":\"The username of the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserResourcePath\",\"description\":\"The HTTP path for the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserUrl\",\"description\":\"The HTTP URL for the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgBlockUserAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigDisableCollaboratorsOnlyAuditEntry\",\"description\":\"Audit log entry for a org.config.disable_collaborators_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgConfigDisableCollaboratorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigEnableCollaboratorsOnlyAuditEntry\",\"description\":\"Audit log entry for a org.config.enable_collaborators_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgConfigEnableCollaboratorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgCreateAuditEntry\",\"description\":\"Audit log entry for a org.create event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"billingPlan\",\"description\":\"The billing plan for the Organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgCreateAuditEntryBillingPlan\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgCreateAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgCreateAuditEntryBillingPlan\",\"description\":\"The billing plans available for organizations.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"FREE\",\"description\":\"Free Plan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BUSINESS\",\"description\":\"Team Plan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BUSINESS_PLUS\",\"description\":\"Enterprise Cloud Plan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNLIMITED\",\"description\":\"Legacy Unlimited Plan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TIERED_PER_SEAT\",\"description\":\"Tiered Per Seat Plan\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableOauthAppRestrictionsAuditEntry\",\"description\":\"Audit log entry for a org.disable_oauth_app_restrictions event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgDisableOauthAppRestrictionsAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableSamlAuditEntry\",\"description\":\"Audit log entry for a org.disable_saml event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"digestMethodUrl\",\"description\":\"The SAML provider's digest algorithm URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgDisableSamlAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issuerUrl\",\"description\":\"The SAML provider's issuer URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"signatureMethodUrl\",\"description\":\"The SAML provider's signature algorithm URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"singleSignOnUrl\",\"description\":\"The SAML provider's single sign-on URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableTwoFactorRequirementAuditEntry\",\"description\":\"Audit log entry for a org.disable_two_factor_requirement event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgDisableTwoFactorRequirementAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableOauthAppRestrictionsAuditEntry\",\"description\":\"Audit log entry for a org.enable_oauth_app_restrictions event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgEnableOauthAppRestrictionsAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableSamlAuditEntry\",\"description\":\"Audit log entry for a org.enable_saml event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"digestMethodUrl\",\"description\":\"The SAML provider's digest algorithm URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgEnableSamlAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issuerUrl\",\"description\":\"The SAML provider's issuer URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"signatureMethodUrl\",\"description\":\"The SAML provider's signature algorithm URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"singleSignOnUrl\",\"description\":\"The SAML provider's single sign-on URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableTwoFactorRequirementAuditEntry\",\"description\":\"Audit log entry for a org.enable_two_factor_requirement event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgEnableTwoFactorRequirementAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrgEnterpriseOwnerOrder\",\"description\":\"Ordering options for an organization's enterprise owner connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order enterprise owners by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrgEnterpriseOwnerOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgEnterpriseOwnerOrderField\",\"description\":\"Properties by which enterprise owners can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order enterprise owners by login.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteMemberAuditEntry\",\"description\":\"Audit log entry for a org.invite_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"email\",\"description\":\"The email address of the organization invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgInviteMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationInvitation\",\"description\":\"The organization invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"description\":\"Audit log entry for a org.invite_to_business event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the OrgInviteToBusinessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"description\":\"Audit log entry for a org.oauth_app_access_approved event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgOauthAppAccessApprovedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"description\":\"Audit log entry for a org.oauth_app_access_blocked event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgOauthAppAccessBlockedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"description\":\"Audit log entry for a org.oauth_app_access_denied event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgOauthAppAccessDeniedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"description\":\"Audit log entry for a org.oauth_app_access_requested event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgOauthAppAccessRequestedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"description\":\"Audit log entry for a org.oauth_app_access_unblocked event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgOauthAppAccessUnblockedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationName\",\"description\":\"The name of the OAuth application.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationResourcePath\",\"description\":\"The HTTP path for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oauthApplicationUrl\",\"description\":\"The HTTP URL for the OAuth application\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OauthApplicationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveBillingManagerAuditEntry\",\"description\":\"Audit log entry for a org.remove_billing_manager event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgRemoveBillingManagerAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"reason\",\"description\":\"The reason for the billing manager being removed.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgRemoveBillingManagerAuditEntryReason\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgRemoveBillingManagerAuditEntryReason\",\"description\":\"The reason a billing manager was removed from an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE\",\"description\":\"The organization required 2FA of its billing managers and this user did not have 2FA enabled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAML_EXTERNAL_IDENTITY_MISSING\",\"description\":\"SAML external identity missing\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY\",\"description\":\"SAML SSO enforcement requires an external identity\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveMemberAuditEntry\",\"description\":\"Audit log entry for a org.remove_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgRemoveMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membershipTypes\",\"description\":\"The types of membership the member has with the organization.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrgRemoveMemberAuditEntryMembershipType\",\"ofType\":null}}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"reason\",\"description\":\"The reason for the member being removed.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgRemoveMemberAuditEntryReason\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgRemoveMemberAuditEntryMembershipType\",\"description\":\"The type of membership a user has with an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SUSPENDED\",\"description\":\"A suspended member.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DIRECT_MEMBER\",\"description\":\"A direct member is a user that is a member of the Organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Organization owners have full access and can change several settings, including the names of repositories that belong to the Organization and Owners team membership. In addition, organization owners can delete the organization and all of its repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING_MANAGER\",\"description\":\"A billing manager is a user who manages the billing settings for the Organization, such as updating payment information.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNAFFILIATED\",\"description\":\"An unaffiliated collaborator is a person who is not a member of the Organization and does not have access to any repositories in the Organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OUTSIDE_COLLABORATOR\",\"description\":\"An outside collaborator is a person who isn't explicitly a member of the Organization, but who has Read, Write, or Admin permissions to one or more repositories in the organization.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgRemoveMemberAuditEntryReason\",\"description\":\"The reason a member was removed from an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE\",\"description\":\"The organization required 2FA of its billing managers and this user did not have 2FA enabled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAML_EXTERNAL_IDENTITY_MISSING\",\"description\":\"SAML external identity missing\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY\",\"description\":\"SAML SSO enforcement requires an external identity\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER_ACCOUNT_DELETED\",\"description\":\"User account has been deleted\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TWO_FACTOR_ACCOUNT_RECOVERY\",\"description\":\"User was removed from organization during account recovery\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntry\",\"description\":\"Audit log entry for a org.remove_outside_collaborator event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgRemoveOutsideCollaboratorAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membershipTypes\",\"description\":\"The types of membership the outside collaborator has with the organization.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntryMembershipType\",\"ofType\":null}}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"reason\",\"description\":\"The reason for the outside collaborator being removed from the Organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntryReason\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntryMembershipType\",\"description\":\"The type of membership a user has with an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OUTSIDE_COLLABORATOR\",\"description\":\"An outside collaborator is a person who isn't explicitly a member of the Organization, but who has Read, Write, or Admin permissions to one or more repositories in the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNAFFILIATED\",\"description\":\"An unaffiliated collaborator is a person who is not a member of the Organization and does not have access to any repositories in the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING_MANAGER\",\"description\":\"A billing manager is a user who manages the billing settings for the Organization, such as updating payment information.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntryReason\",\"description\":\"The reason an outside collaborator was removed from an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE\",\"description\":\"The organization required 2FA of its billing managers and this user did not have 2FA enabled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SAML_EXTERNAL_IDENTITY_MISSING\",\"description\":\"SAML external identity missing\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberAuditEntry\",\"description\":\"Audit log entry for a org.restore_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgRestoreMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredCustomEmailRoutingsCount\",\"description\":\"The number of custom email routings for the restored member.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredIssueAssignmentsCount\",\"description\":\"The number of issue assignments for the restored member.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredMemberships\",\"description\":\"Restored organization membership objects.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"OrgRestoreMemberAuditEntryMembership\",\"ofType\":null}}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredMembershipsCount\",\"description\":\"The number of restored memberships.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredRepositoriesCount\",\"description\":\"The number of repositories of the restored member.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredRepositoryStarsCount\",\"description\":\"The number of starred repositories for the restored member.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"restoredRepositoryWatchesCount\",\"description\":\"The number of watched repositories for the restored member.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"OrgRestoreMemberAuditEntryMembership\",\"description\":\"Types of memberships that can be restored for an Organization member.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipOrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipRepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipTeamAuditEntryData\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipOrganizationAuditEntryData\",\"description\":\"Metadata for an organization membership for org.restore_member actions\",\"fields\":[{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipRepositoryAuditEntryData\",\"description\":\"Metadata for a repository membership for org.restore_member actions\",\"fields\":[{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipTeamAuditEntryData\",\"description\":\"Metadata for a team membership for org.restore_member actions\",\"fields\":[{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUnblockUserAuditEntry\",\"description\":\"Audit log entry for a org.unblock_user\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUser\",\"description\":\"The user being unblocked by the organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserName\",\"description\":\"The username of the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserResourcePath\",\"description\":\"The HTTP path for the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"blockedUserUrl\",\"description\":\"The HTTP URL for the blocked user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgUnblockUserAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntry\",\"description\":\"Audit log entry for a org.update_default_repository_permission\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgUpdateDefaultRepositoryPermissionAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"permission\",\"description\":\"The new base repository permission level for the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntryPermission\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"permissionWas\",\"description\":\"The former base repository permission level for the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntryPermission\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntryPermission\",\"description\":\"The default permission a repository can have in an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"READ\",\"description\":\"Can read and clone repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITE\",\"description\":\"Can read, clone and push to repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Can read, clone, push, and add collaborators to repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"No default permission value.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberAuditEntry\",\"description\":\"Audit log entry for a org.update_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgUpdateMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"permission\",\"description\":\"The new member permission level for the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgUpdateMemberAuditEntryPermission\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"permissionWas\",\"description\":\"The former member permission level for the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgUpdateMemberAuditEntryPermission\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgUpdateMemberAuditEntryPermission\",\"description\":\"The permissions available to members on an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"READ\",\"description\":\"Can read and clone repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"Can read, clone, push, and add collaborators to repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\",\"description\":\"Audit log entry for a org.update_member_repository_creation_permission event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"canCreateRepositories\",\"description\":\"Can members create repositories in the organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgUpdateMemberRepositoryCreationPermissionAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The permission for visibility level of repositories for this organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility\",\"description\":\"The permissions available for repository creation on an Organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALL\",\"description\":\"All organization members are restricted from creating any repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"All organization members are restricted from creating public repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"All organization members are allowed to create any repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"All organization members are restricted from creating private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INTERNAL\",\"description\":\"All organization members are restricted from creating internal repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC_INTERNAL\",\"description\":\"All organization members are restricted from creating public or internal repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE_INTERNAL\",\"description\":\"All organization members are restricted from creating private or internal repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC_PRIVATE\",\"description\":\"All organization members are restricted from creating public or private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\",\"description\":\"Audit log entry for a org.update_member_repository_invitation_permission event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"canInviteOutsideCollaboratorsToRepositories\",\"description\":\"Can outside collaborators be invited to repositories in the organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the OrgUpdateMemberRepositoryInvitationPermissionAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"description\":\"An account on GitHub, with one or more owners, that has repositories, members and teams.\",\"fields\":[{\"name\":\"announcementBanner\",\"description\":\"The announcement banner set on this organization, if any. Only visible to members of the organization's enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AnnouncementBanner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"anyPinnableItems\",\"description\":\"Determine if this repository owner has any items that can be pinned to their profile.\",\"args\":[{\"name\":\"type\",\"description\":\"Filter to only a particular kind of pinnable item.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"archivedAt\",\"description\":\"Identifies the date and time when the organization was archived.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"auditLog\",\"description\":\"Audit log entries of the organization\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The query string to filter audit entries\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the returned audit log entries.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"AuditLogOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationAuditEntryConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the organization's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The organization's public profile description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The organization's public profile description rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domains\",\"description\":\"A list of domains owned by the organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isVerified\",\"description\":\"Filter by if the domain is verified.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"isApproved\",\"description\":\"Filter by if the domain is approved.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for verifiable domains returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"VerifiableDomainOrder\",\"ofType\":null},\"defaultValue\":\"{field: DOMAIN, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomainConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The organization's public email.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseOwners\",\"description\":\"A list of owners of the organization's enterprise account.\",\"args\":[{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationRole\",\"description\":\"The organization role to filter by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RoleInOrganization\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for enterprise owners returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrgEnterpriseOwnerOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationEnterpriseOwnerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"estimatedNextSponsorsPayoutInCents\",\"description\":\"The estimated next GitHub Sponsors payout for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasSponsorsListing\",\"description\":\"True if this user/organization has a GitHub Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Organization object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"interactionAbility\",\"description\":\"The interaction ability settings for this organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInteractionAbility\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEnabledSetting\",\"description\":\"The setting value for whether the organization has an IP allow list enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListEnabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntries\",\"description\":\"The IP addresses that are allowed to access resources owned by the organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for IP allow list entries returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IpAllowListEntryOrder\",\"ofType\":null},\"defaultValue\":\"{field: ALLOW_LIST_VALUE, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListForInstalledAppsEnabledSetting\",\"description\":\"The setting value for whether the organization has IP allow list configuration for installed GitHub Apps enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListForInstalledAppsEnabledSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoredBy\",\"description\":\"Whether the given account is sponsoring this user/organization.\",\"args\":[{\"name\":\"accountLogin\",\"description\":\"The target account's login.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoringViewer\",\"description\":\"True if the viewer is sponsored by this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isVerified\",\"description\":\"Whether the organization has verified its profile email and website.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueTypes\",\"description\":\"A list of the organization's issue types\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for issue types returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueTypeOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueTypeConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"itemShowcase\",\"description\":\"Showcases a selection of repositories and gists that the profile owner has either curated or that have been selected automatically based on popularity.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProfileItemShowcase\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lifetimeReceivedSponsorshipValues\",\"description\":\"Calculate how much each sponsor has ever paid total to this maintainer via GitHub Sponsors. Does not include sponsorships paid via Patreon.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for results returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorAndLifetimeValueOrder\",\"ofType\":null},\"defaultValue\":\"{field: SPONSOR_LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"location\",\"description\":\"The organization's public profile location.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The organization's login name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mannequins\",\"description\":\"A list of all mannequins for this organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"Filter mannequins by login.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for mannequins returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MannequinOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MannequinConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"memberStatuses\",\"description\":\"Get the status messages members of this entity have set that are either public or visible only to the organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for user statuses returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UserStatusOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserStatusConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersCanForkPrivateRepositories\",\"description\":\"Members can fork private repositories in this organization\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersWithRole\",\"description\":\"A list of users who are members of this organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationMemberConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"monthlyEstimatedSponsorsIncomeInCents\",\"description\":\"The estimated monthly GitHub Sponsors income for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The organization's public profile name.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newTeamResourcePath\",\"description\":\"The HTTP path creating a new team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newTeamUrl\",\"description\":\"The HTTP URL creating a new team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationDeliveryRestrictionEnabledSetting\",\"description\":\"Indicates if email notification delivery for this organization is restricted to verified or approved domains.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationRestrictionSettingValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationBillingEmail\",\"description\":\"The billing email for the organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packages\",\"description\":\"A list of packages under the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"names\",\"description\":\"Find packages by their names.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Find packages in a repository by ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"packageType\",\"description\":\"Filter registry package by type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering of the returned packages.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingMembers\",\"description\":\"A list of users who have been invited to join this organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnableItems\",\"description\":\"A list of repositories and gists this profile owner can pin to their profile.\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinnable items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItems\",\"description\":\"A list of repositories and gists this profile owner has pinned to their profile\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinned items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItemsRemaining\",\"description\":\"Returns how many more items this profile owner can pin to their profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Find project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectV2\",\"description\":\"Find a project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projects\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for projects returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"search\",\"description\":\"Query to search projects by, currently only searching by name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the projects by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectsResourcePath\",\"description\":\"The HTTP path listing organization's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsUrl\",\"description\":\"The HTTP URL listing organization's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"query\",\"description\":\"A project to search for under the owner.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"recentProjects\",\"description\":\"Recent projects that this user has modified in the context of the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"A list of repositories that the user owns.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isArchived\",\"description\":\"If non-null, filters repositories according to whether they are archived and not maintained\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isFork\",\"description\":\"If non-null, filters repositories according to whether they are forks of another repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Find Repository.\",\"args\":[{\"name\":\"name\",\"description\":\"Name of Repository to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"followRenames\",\"description\":\"Follow repository renames. If disabled, a repository referenced by its old name will return an error.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDiscussionComments\",\"description\":\"Discussion comments this user has authored.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Filter discussion comments to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"onlyAnswers\",\"description\":\"Filter discussion comments to only those that were marked as the answer\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDiscussions\",\"description\":\"Discussions this user has started.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for discussions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"repositoryId\",\"description\":\"Filter discussions to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"answered\",\"description\":\"Filter discussions to only those that have been answered or not. Defaults to including both answered and unanswered discussions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"states\",\"description\":\"A list of states to filter the discussions by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionState\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryMigrations\",\"description\":\"A list of all repository migrations for this organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"Filter repository migrations by state.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"MigrationState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryName\",\"description\":\"Filter repository migrations by repository name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repository migrations returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryMigrationOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigrationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresTwoFactorAuthentication\",\"description\":\"When true the organization requires all members, billing managers, and outside collaborators to enable two-factor authentication.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ruleset\",\"description\":\"Returns a single ruleset from the current organization by ID.\",\"args\":[{\"name\":\"databaseId\",\"description\":\"The ID of the ruleset to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"includeParents\",\"description\":\"Include rulesets configured at higher levels that apply to this organization.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rulesets\",\"description\":\"A list of rulesets for this organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includeParents\",\"description\":\"Return rulesets configured at higher levels that apply to this organization\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"targets\",\"description\":\"Return rulesets that apply to the specified target\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"ofType\":null}}},\"defaultValue\":\"null\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"samlIdentityProvider\",\"description\":\"The Organization's SAML identity provider. Visible to (1) organization owners, (2) organization owners' personal access tokens (classic) with read:org or admin:org scope, (3) GitHub App with an installation token with read or write access to members.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationIdentityProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsoring\",\"description\":\"List of users and organizations this entity is sponsoring.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the users and organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsors\",\"description\":\"List of sponsors for this user or organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"If given, will filter for sponsors at the given tier. Will only return sponsors whose tier the viewer is permitted to see.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsors returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsActivities\",\"description\":\"Events involving this sponsorable, such as new sponsorships.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"period\",\"description\":\"Filter activities returned to only those that occurred in the most recent specified time period. Set to ALL to avoid filtering by when the activity occurred. Will be ignored if `since` or `until` is given.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityPeriod\",\"ofType\":null},\"defaultValue\":\"MONTH\"},{\"name\":\"since\",\"description\":\"Filter activities to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter activities to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for activity returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsActivityOrder\",\"ofType\":null},\"defaultValue\":\"{field: TIMESTAMP, direction: DESC}\"},{\"name\":\"actions\",\"description\":\"Filter activities to only the specified actions.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityAction\",\"ofType\":null}}},\"defaultValue\":\"[]\"},{\"name\":\"includeAsSponsor\",\"description\":\"Whether to include those events where this sponsorable acted as the sponsor. Defaults to only including events where this sponsorable was the recipient of a sponsorship.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private activities in the result set. Defaults to including public and private activities.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors listing for this user or organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsor\",\"description\":\"The sponsorship from the viewer to this user/organization; that is, the sponsorship where you're the sponsor.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the viewer's sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsorable\",\"description\":\"The sponsorship from this user/organization to the viewer; that is, the sponsorship you're receiving.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipNewsletters\",\"description\":\"List of sponsorship updates sent from this sponsorable to sponsors.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorship updates returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipNewsletterOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsMaintainer\",\"description\":\"The sponsorships where this user or organization is the maintainer receiving the funds.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private sponsorships in the result set\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this maintainer has ever received.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsSponsor\",\"description\":\"The sponsorships where this user or organization is the funder.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maintainerLogins\",\"description\":\"Filter sponsorships returned to those for the specified maintainers. That is, the recipient of the sponsorship is a user or organization with one of the given logins.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this sponsor has ever made.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"Find an organization's team by its slug.\",\"args\":[{\"name\":\"slug\",\"description\":\"The name or slug of the team to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teams\",\"description\":\"A list of teams in this organization.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters teams according to privacy\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"notificationSetting\",\"description\":\"If non-null, filters teams according to notification setting\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamNotificationSetting\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"If non-null, filters teams according to whether the viewer is an admin or member on team\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"If non-null, filters teams with query on team name and team slug\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userLogins\",\"description\":\"User logins to filter by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for teams returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ldapMapped\",\"description\":\"If true, filters teams that are mapped to an LDAP Group (Enterprise only)\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"rootTeamsOnly\",\"description\":\"If true, restrict to only root teams\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsResourcePath\",\"description\":\"The HTTP path listing organization's teams\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsUrl\",\"description\":\"The HTTP URL listing organization's teams\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalSponsorshipAmountAsSponsorInCents\",\"description\":\"The amount in United States cents (e.g., 500 = $5.00 USD) that this entity has spent on GitHub to fund sponsorships. Only returns a value when viewed by the user themselves or by a user who can manage sponsorships for the requested organization.\",\"args\":[{\"name\":\"since\",\"description\":\"Filter payments to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter payments to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogins\",\"description\":\"Filter payments to those made to the users or organizations with the specified usernames.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"twitterUsername\",\"description\":\"The organization's Twitter username.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanAdminister\",\"description\":\"Organization is adminable by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanChangePinnedItems\",\"description\":\"Can the viewer pin repositories and gists to the profile?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanCreateProjects\",\"description\":\"Can the current viewer create new projects on this owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"viewerCanCreateRepositories\",\"description\":\"Viewer can create repositories on this organization\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanCreateTeams\",\"description\":\"Viewer can create teams on this organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSponsor\",\"description\":\"Whether or not the viewer is able to sponsor this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsAMember\",\"description\":\"Viewer is an active member of this organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsFollowing\",\"description\":\"Whether or not this Organization is followed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsSponsoring\",\"description\":\"True if the viewer is sponsoring this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"webCommitSignoffRequired\",\"description\":\"Whether contributors are required to sign off on web-based commits for repositories in this organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"websiteUrl\",\"description\":\"The organization's public profile URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"MemberStatusable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"PackageOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProfileOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Recent\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionAuthor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionCommentAuthor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"OrganizationAuditEntry\",\"description\":\"An audit entry in an organization audit log.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgBlockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUnblockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"OrganizationAuditEntryConnection\",\"description\":\"The connection type for OrganizationAuditEntry.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationAuditEntryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"OrganizationAuditEntry\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"description\":\"Metadata for an audit entry with action org.*\",\"fields\":[{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposClearAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MembersCanDeleteReposEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OauthApplicationCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgBlockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgDisableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableOauthAppRestrictionsAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableSamlAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgEnableTwoFactorRequirementAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgInviteToBusinessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessApprovedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessBlockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessDeniedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessRequestedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgOauthAppAccessUnblockedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveBillingManagerAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRemoveOutsideCollaboratorAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipOrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUnblockUserAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateDefaultRepositoryPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"OrganizationAuditEntryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"OrganizationAuditEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"description\":\"A list of organizations managed by an enterprise.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationEnterpriseOwnerConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationEnterpriseOwnerEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationEnterpriseOwnerEdge\",\"description\":\"An enterprise owner in the context of an organization that is part of the enterprise.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationRole\",\"description\":\"The role of the owner with respect to the organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RoleInOrganization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationIdentityProvider\",\"description\":\"An Identity Provider configured to provision SAML and SCIM identities for Organizations. Visible to (1) organization owners, (2) organization owners' personal access tokens (classic) with read:org or admin:org scope, (3) GitHub App with an installation token with read or write access to members.\",\"fields\":[{\"name\":\"digestMethod\",\"description\":\"The digest algorithm used to sign SAML requests for the Identity Provider.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"externalIdentities\",\"description\":\"External Identities provisioned by this Identity Provider\",\"args\":[{\"name\":\"membersOnly\",\"description\":\"Filter to external identities with valid org membership only\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"Filter to external identities with the users login\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userName\",\"description\":\"Filter to external identities with the users userName/NameID attribute\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ExternalIdentityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the OrganizationIdentityProvider object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"idpCertificate\",\"description\":\"The x509 certificate used by the Identity Provider to sign assertions and responses.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"X509Certificate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issuer\",\"description\":\"The Issuer Entity ID for the SAML Identity Provider\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"Organization this Identity Provider belongs to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signatureMethod\",\"description\":\"The signature algorithm used to sign SAML requests for the Identity Provider.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ssoUrl\",\"description\":\"The URL endpoint for the Identity Provider's SAML SSO.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"description\":\"An Invitation for a user to an organization.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The email address of the user invited to the organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the OrganizationInvitation object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitationSource\",\"description\":\"The source of the invitation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationSource\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitationType\",\"description\":\"The type of invitation that was sent (e.g. email, user).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitee\",\"description\":\"The user who was invited to the organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inviter\",\"description\":\"The user who created the invitation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`inviter` will be removed. `inviter` will be replaced by `inviterActor`. Removal on 2024-07-01 UTC.\"},{\"name\":\"inviterActor\",\"description\":\"The user who created the invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization the invite is for\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The user's pending role in the organization (e.g. member, owner).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitationConnection\",\"description\":\"The connection type for OrganizationInvitation.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationRole\",\"description\":\"The possible organization invitation roles.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DIRECT_MEMBER\",\"description\":\"The user is invited to be a direct member of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"The user is invited to be an admin of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING_MANAGER\",\"description\":\"The user is invited to be a billing manager of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REINSTATE\",\"description\":\"The user's previous role will be reinstated.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationSource\",\"description\":\"The possible organization invitation sources.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UNKNOWN\",\"description\":\"The invitation was sent before this feature was added\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MEMBER\",\"description\":\"The invitation was created from the web interface or from API\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SCIM\",\"description\":\"The invitation was created from SCIM\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationInvitationType\",\"description\":\"The possible organization invitation types.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"USER\",\"description\":\"The invitation was to an existing user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EMAIL\",\"description\":\"The invitation was to an email address.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationMemberConnection\",\"description\":\"A list of users who belong to the organization.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationMemberEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationMemberEdge\",\"description\":\"Represents a user within an organization.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasTwoFactorEnabled\",\"description\":\"Whether the organization member has two factor enabled or not. Returns null if information is not available to viewer.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The role this user has in the organization.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OrganizationMemberRole\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationMemberRole\",\"description\":\"The possible roles within an organization for its members.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MEMBER\",\"description\":\"The user is a member of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"The user is an administrator of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationMembersCanCreateRepositoriesSettingValue\",\"description\":\"The possible values for the members can create repositories setting on an organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALL\",\"description\":\"Members will be able to create public and private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"Members will be able to create only private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INTERNAL\",\"description\":\"Members will be able to create only internal repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"Members will not be able to create public or private repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationMigration\",\"description\":\"A GitHub Enterprise Importer (GEI) organization migration.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"failureReason\",\"description\":\"The reason the organization migration failed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the OrganizationMigration object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"remainingRepositoriesCount\",\"description\":\"The remaining amount of repos to be migrated.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sourceOrgName\",\"description\":\"The name of the source organization to be migrated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sourceOrgUrl\",\"description\":\"The URL of the source organization to migrate.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The migration state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationMigrationState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"targetOrgName\",\"description\":\"The name of the target organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRepositoriesCount\",\"description\":\"The total amount of repositories to be migrated.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationMigrationState\",\"description\":\"The Octoshift Organization migration state.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NOT_STARTED\",\"description\":\"The Octoshift migration has not started.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QUEUED\",\"description\":\"The Octoshift migration has been queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The Octoshift migration is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRE_REPO_MIGRATION\",\"description\":\"The Octoshift migration is performing pre repository migrations.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REPO_MIGRATION\",\"description\":\"The Octoshift org migration is performing repository migrations.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"POST_REPO_MIGRATION\",\"description\":\"The Octoshift migration is performing post repository migrations.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCEEDED\",\"description\":\"The Octoshift migration has succeeded.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILED\",\"description\":\"The Octoshift migration has failed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING_VALIDATION\",\"description\":\"The Octoshift migration needs to have its credentials validated.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILED_VALIDATION\",\"description\":\"The Octoshift migration has invalid credentials.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"OrganizationOrUser\",\"description\":\"Used for argument of CreateProjectV2 mutation.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"description\":\"Ordering options for organization connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order organizations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrganizationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"OrganizationOrderField\",\"description\":\"Properties by which organization connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order organizations by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOGIN\",\"description\":\"Order organizations by login\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationPropertyConditionTarget\",\"description\":\"Parameters to be used for the organization_property condition\",\"fields\":[{\"name\":\"exclude\",\"description\":\"Array of organization properties that must not match.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationPropertyTargetDefinition\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"include\",\"description\":\"Array of organization properties that must match\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationPropertyTargetDefinition\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationPropertyConditionTargetInput\",\"description\":\"Parameters to be used for the organization_property condition\",\"fields\":null,\"inputFields\":[{\"name\":\"exclude\",\"description\":\"Array of organization properties that must not match.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationPropertyTargetDefinitionInput\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"include\",\"description\":\"Array of organization properties that must match\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationPropertyTargetDefinitionInput\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationPropertyTargetDefinition\",\"description\":\"A property that must match\",\"fields\":[{\"name\":\"name\",\"description\":\"The name of the property\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"propertyValues\",\"description\":\"The values to match for\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationPropertyTargetDefinitionInput\",\"description\":\"A property that must match\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"The name of the property\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"propertyValues\",\"description\":\"The values to match for\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationTeamsHovercardContext\",\"description\":\"An organization teams hovercard context\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"relevantTeams\",\"description\":\"Teams in this organization the user is a member of that are relevant\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsResourcePath\",\"description\":\"The path for the full team list for this user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsUrl\",\"description\":\"The URL for the full team list for this user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalTeamCount\",\"description\":\"The total number of teams the user is on in the organization\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"OrganizationsHovercardContext\",\"description\":\"An organization list hovercard context\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"relevantOrganizations\",\"description\":\"Organizations this user is a member of that are relevant\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for the User's organizations.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalOrganizationCount\",\"description\":\"The total number of organizations this user is in\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Package\",\"description\":\"Information for an uploaded package.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Package object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestVersion\",\"description\":\"Find the latest version for the package.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Identifies the name of the package.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packageType\",\"description\":\"Identifies the type of the package.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository this package belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statistics\",\"description\":\"Statistics about package activity.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageStatistics\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"version\",\"description\":\"Find package version by version string.\",\"args\":[{\"name\":\"version\",\"description\":\"The package version.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"versions\",\"description\":\"list of versions for this package\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering of the returned packages.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageVersionOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageConnection\",\"description\":\"The connection type for Package.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Package\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Package\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageFile\",\"description\":\"A file in a package version.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the PackageFile object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"md5\",\"description\":\"MD5 hash of the file.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Name of the file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packageVersion\",\"description\":\"The package version this file belongs to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sha1\",\"description\":\"SHA1 hash of the file.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sha256\",\"description\":\"SHA256 hash of the file.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"size\",\"description\":\"Size of the file in bytes.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"URL to download the asset.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageFileConnection\",\"description\":\"The connection type for PackageFile.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageFileEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageFile\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageFileEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageFile\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageFileOrder\",\"description\":\"Ways in which lists of package files can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order package files by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageFileOrderField\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order package files by the specified field.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PackageFileOrderField\",\"description\":\"Properties by which package file connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order package files by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageOrder\",\"description\":\"Ways in which lists of packages can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order packages by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageOrderField\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order packages by the specified field.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PackageOrderField\",\"description\":\"Properties by which package connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order packages by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"PackageOwner\",\"description\":\"Represents an owner of a package.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the PackageOwner object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packages\",\"description\":\"A list of packages under the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"names\",\"description\":\"Find packages by their names.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Find packages in a repository by ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"packageType\",\"description\":\"Filter registry package by type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering of the returned packages.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PackageStatistics\",\"description\":\"Represents a object that contains package activity statistics such as downloads.\",\"fields\":[{\"name\":\"downloadsTotalCount\",\"description\":\"Number of times the package was downloaded since it was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageTag\",\"description\":\"A version tag contains the mapping between a tag name and a version.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the PackageTag object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Identifies the tag name of the version.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"version\",\"description\":\"Version that the tag is associated with.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"description\":\"The possible types of a package.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NPM\",\"description\":\"An npm package.\",\"isDeprecated\":true,\"deprecationReason\":\"NPM will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2022-11-21 UTC.\"},{\"name\":\"RUBYGEMS\",\"description\":\"A rubygems package.\",\"isDeprecated\":true,\"deprecationReason\":\"RUBYGEMS will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2022-12-28 UTC.\"},{\"name\":\"MAVEN\",\"description\":\"A maven package.\",\"isDeprecated\":true,\"deprecationReason\":\"MAVEN will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2023-02-10 UTC.\"},{\"name\":\"DOCKER\",\"description\":\"A docker image.\",\"isDeprecated\":true,\"deprecationReason\":\"DOCKER will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2021-06-21 UTC.\"},{\"name\":\"DEBIAN\",\"description\":\"A debian package.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUGET\",\"description\":\"A nuget package.\",\"isDeprecated\":true,\"deprecationReason\":\"NUGET will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2022-11-21 UTC.\"},{\"name\":\"PYPI\",\"description\":\"A python package.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"description\":\"Information about a specific package version.\",\"fields\":[{\"name\":\"files\",\"description\":\"List of files associated with this package version\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering of the returned package files.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageFileOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageFileConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PackageVersion object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"package\",\"description\":\"The package associated with this version.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Package\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"platform\",\"description\":\"The platform this version was built for.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"preRelease\",\"description\":\"Whether or not this version is a pre-release.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"readme\",\"description\":\"The README of this package version.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"release\",\"description\":\"The release associated with this package version.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statistics\",\"description\":\"Statistics about package activity.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersionStatistics\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summary\",\"description\":\"The package version summary.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"version\",\"description\":\"The version string.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageVersionConnection\",\"description\":\"The connection type for PackageVersion.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageVersionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageVersionOrder\",\"description\":\"Ways in which lists of package versions can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order package versions by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageVersionOrderField\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order package versions by the specified field.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PackageVersionOrderField\",\"description\":\"Properties by which package version connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order package versions by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PackageVersionStatistics\",\"description\":\"Represents a object that contains package version activity statistics such as downloads.\",\"fields\":[{\"name\":\"downloadsTotalCount\",\"description\":\"Number of times the package was downloaded since it was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"description\":\"Information about pagination in a connection.\",\"fields\":[{\"name\":\"endCursor\",\"description\":\"When paginating forwards, the cursor to continue.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasNextPage\",\"description\":\"When paginating forwards, are there more items?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasPreviousPage\",\"description\":\"When paginating backwards, are there more items?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startCursor\",\"description\":\"When paginating backwards, the cursor to continue.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueAddedEvent\",\"description\":\"Represents a 'parent_issue_added' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ParentIssueAddedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parent\",\"description\":\"The parent issue added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueRemovedEvent\",\"description\":\"Represents a 'parent_issue_removed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ParentIssueRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parent\",\"description\":\"The parent issue removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PatchStatus\",\"description\":\"The possible types of patch statuses.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ADDED\",\"description\":\"The file was added. Git status 'A'.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DELETED\",\"description\":\"The file was deleted. Git status 'D'.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RENAMED\",\"description\":\"The file was renamed. Git status 'R'.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COPIED\",\"description\":\"The file was copied. Git status 'C'.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MODIFIED\",\"description\":\"The file's contents were changed. Git status 'M'.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CHANGED\",\"description\":\"The file's type was changed. Git status 'T'.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"PermissionGranter\",\"description\":\"Types that can grant permissions on a repository to a user\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PermissionSource\",\"description\":\"A level of permission and source for a user's access to a repository.\",\"fields\":[{\"name\":\"organization\",\"description\":\"The organization the repository belongs to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permission\",\"description\":\"The level of access this source has granted to the user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DefaultRepositoryPermissionField\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"roleName\",\"description\":\"The name of the role this source has granted to the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"The source of this permission.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"PermissionGranter\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinEnvironmentInput\",\"description\":\"Autogenerated input type of PinEnvironment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"environmentId\",\"description\":\"The ID of the environment to modify\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pinned\",\"description\":\"The desired state of the environment. If true, environment will be pinned. If false, it will be unpinned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinEnvironmentPayload\",\"description\":\"Autogenerated return type of PinEnvironment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The environment that was pinned\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedEnvironment\",\"description\":\"The pinned environment if we pinned\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinIssueInput\",\"description\":\"Autogenerated input type of PinIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the issue to be pinned\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinIssuePayload\",\"description\":\"Autogenerated return type of PinIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was pinned\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"PinnableItem\",\"description\":\"Types that can be pinned to a profile page.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"description\":\"The connection type for PinnableItem.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"PinnableItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnableItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"PinnableItem\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"description\":\"Represents items that can be pinned to a profile page or dashboard.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REPOSITORY\",\"description\":\"A repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GIST\",\"description\":\"A gist.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE\",\"description\":\"An issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PROJECT\",\"description\":\"A project.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST\",\"description\":\"A pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER\",\"description\":\"A user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORGANIZATION\",\"description\":\"An organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TEAM\",\"description\":\"A team.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussion\",\"description\":\"A Pinned Discussion is a discussion pinned to a repository's index page.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that was pinned.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gradientStopColors\",\"description\":\"Color stops of the chosen gradient\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PinnedDiscussion object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"Background texture pattern\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnedDiscussionPattern\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedBy\",\"description\":\"The actor that pinned this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"preconfiguredGradient\",\"description\":\"Preconfigured background gradient option\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"PinnedDiscussionGradient\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussionConnection\",\"description\":\"The connection type for PinnedDiscussion.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussion\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PinnedDiscussionGradient\",\"description\":\"Preconfigured gradients that may be used to style discussions pinned within a repository.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RED_ORANGE\",\"description\":\"A gradient of red to orange\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLUE_MINT\",\"description\":\"A gradient of blue to mint\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLUE_PURPLE\",\"description\":\"A gradient of blue to purple\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PINK_BLUE\",\"description\":\"A gradient of pink to blue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PURPLE_CORAL\",\"description\":\"A gradient of purple to coral\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PinnedDiscussionPattern\",\"description\":\"Preconfigured background patterns that may be used to style discussions pinned within a repository.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DOT_FILL\",\"description\":\"A solid dot pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PLUS\",\"description\":\"A plus sign pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ZAP\",\"description\":\"A lightning bolt pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CHEVRON_UP\",\"description\":\"An upward-facing chevron pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DOT\",\"description\":\"A hollow dot pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEART_FILL\",\"description\":\"A heart pattern\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironment\",\"description\":\"Represents a pinned environment on a given repository\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the pinned environment was created\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"Identifies the environment associated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PinnedEnvironment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"Identifies the position of the pinned environment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that this environment was pinned to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironmentConnection\",\"description\":\"The connection type for PinnedEnvironment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironmentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironmentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinnedEnvironmentOrder\",\"description\":\"Ordering options for pinned environments\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order pinned environments by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnedEnvironmentOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order pinned environments by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PinnedEnvironmentOrderField\",\"description\":\"Properties by which pinned environments connections can be ordered\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"POSITION\",\"description\":\"Order pinned environments by position\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEvent\",\"description\":\"Represents a 'pinned' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PinnedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"Identifies the issue associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedIssue\",\"description\":\"A Pinned Issue is a issue pinned to a repository's index page.\",\"fields\":[{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PinnedIssue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was pinned.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedBy\",\"description\":\"The actor that pinned this issue.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that this issue was pinned to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedIssueConnection\",\"description\":\"The connection type for PinnedIssue.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedIssueEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedIssue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedIssueEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedIssue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"description\":\"An ISO-8601 encoded UTC date string with millisecond precision.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"description\":\"Audit log entry for a private_repository_forking.disable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PrivateRepositoryForkingDisableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"description\":\"Audit log entry for a private_repository_forking.enable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PrivateRepositoryForkingEnableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProfileItemShowcase\",\"description\":\"A curatable list of repositories relating to a repository owner, which defaults to showing the most popular repositories they own.\",\"fields\":[{\"name\":\"hasPinnedItems\",\"description\":\"Whether or not the owner has pinned any repositories or gists.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"items\",\"description\":\"The repositories and gists in the showcase. If the profile owner has any pinned items, those will be returned. Otherwise, the profile owner's popular repositories will be returned.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProfileOwner\",\"description\":\"Represents any entity on GitHub that has a profile page.\",\"fields\":[{\"name\":\"anyPinnableItems\",\"description\":\"Determine if this repository owner has any items that can be pinned to their profile.\",\"args\":[{\"name\":\"type\",\"description\":\"Filter to only a particular kind of pinnable item.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The public profile email.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProfileOwner object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"itemShowcase\",\"description\":\"Showcases a selection of repositories and gists that the profile owner has either curated or that have been selected automatically based on popularity.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProfileItemShowcase\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"location\",\"description\":\"The public profile location.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username used to login.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The public profile name.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnableItems\",\"description\":\"A list of repositories and gists this profile owner can pin to their profile.\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinnable items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItems\",\"description\":\"A list of repositories and gists this profile owner has pinned to their profile\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinned items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItemsRemaining\",\"description\":\"Returns how many more items this profile owner can pin to their profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanChangePinnedItems\",\"description\":\"Can the viewer pin repositories and gists to the profile?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"websiteUrl\",\"description\":\"The public profile website URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"Project\",\"description\":\"Projects manage issues, pull requests and notes within a project owner.\",\"fields\":[{\"name\":\"body\",\"description\":\"The project's description body.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"bodyHTML\",\"description\":\"The projects description body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"closed\",\"description\":\"Indicates if the object is closed (definition of closed may depend on type)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"columns\",\"description\":\"List of columns in the project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"creator\",\"description\":\"The actor who originally created the project.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the Project object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"name\",\"description\":\"The project's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"number\",\"description\":\"The project's number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"owner\",\"description\":\"The project's owner. Currently limited to repositories, organizations, and users.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"pendingCards\",\"description\":\"List of pending cards in this project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"archivedStates\",\"description\":\"A list of archived states to filter the cards by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectCardArchivedState\",\"ofType\":null}},\"defaultValue\":\"[ARCHIVED, NOT_ARCHIVED]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"progress\",\"description\":\"Project progress details.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectProgress\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this project\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"state\",\"description\":\"Whether the project is open or closed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"url\",\"description\":\"The HTTP URL for this project\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"description\":\"A card in a project.\",\"fields\":[{\"name\":\"column\",\"description\":\"The project column this card is associated under. A card may only belong to one\\nproject column at a time. The column field will be null if the card is created\\nin a pending state and has yet to be associated with a column. Once cards are\\nassociated with a column, they will not become pending in the future.\\n\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"content\",\"description\":\"The card content item\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectCardItem\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"creator\",\"description\":\"The actor who created this card\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectCard object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"isArchived\",\"description\":\"Whether the card is archived\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"note\",\"description\":\"The card note\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"project\",\"description\":\"The project that contains this card.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this card\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"state\",\"description\":\"The state of ProjectCard\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectCardState\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"url\",\"description\":\"The HTTP URL for this card\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectCardArchivedState\",\"description\":\"The possible archived states of a project card.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ARCHIVED\",\"description\":\"A project card that is archived\",\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"NOT_ARCHIVED\",\"description\":\"A project card that is not archived\",\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectCardConnection\",\"description\":\"The connection type for ProjectCard.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectCardEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectCardImport\",\"description\":\"An issue or PR and its owning repository to be used in a project card.\",\"fields\":null,\"inputFields\":[{\"name\":\"repository\",\"description\":\"Repository name with owner (owner/repository).\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"number\",\"description\":\"The issue or pull request number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ProjectCardItem\",\"description\":\"Types that can be inside Project Cards.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"ProjectCardState\",\"description\":\"Various content states of a ProjectCard\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CONTENT_ONLY\",\"description\":\"The card has content only.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOTE_ONLY\",\"description\":\"The card has a note only.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REDACTED\",\"description\":\"The card is redacted.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"description\":\"A column inside a project.\",\"fields\":[{\"name\":\"cards\",\"description\":\"List of cards in the column\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"archivedStates\",\"description\":\"A list of archived states to filter the cards by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectCardArchivedState\",\"ofType\":null}},\"defaultValue\":\"[ARCHIVED, NOT_ARCHIVED]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectColumn object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"name\",\"description\":\"The project column's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"project\",\"description\":\"The project that contains this column.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"purpose\",\"description\":\"The semantic purpose of the column\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectColumnPurpose\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this project column\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"url\",\"description\":\"The HTTP URL for this project column\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnConnection\",\"description\":\"The connection type for ProjectColumn.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectColumnEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectColumnImport\",\"description\":\"A project column and a list of its issues and PRs.\",\"fields\":null,\"inputFields\":[{\"name\":\"columnName\",\"description\":\"The name of the column.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"position\",\"description\":\"The position of the column, starting from 0.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"issues\",\"description\":\"A list of issues and pull requests in the column.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectCardImport\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectColumnPurpose\",\"description\":\"The semantic purpose of the column - todo, in progress, or done.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TODO\",\"description\":\"The column contains cards still to be worked on\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The column contains cards which are currently being worked on\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DONE\",\"description\":\"The column contains cards which are complete\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectConnection\",\"description\":\"A list of projects associated with the owner.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectOrder\",\"description\":\"Ways in which lists of projects can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order projects by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order projects by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectOrderField\",\"description\":\"Properties by which project connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order projects by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order projects by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order projects by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"description\":\"Represents an owner of a Project.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the ProjectOwner object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"project\",\"description\":\"Find project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projects\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for projects returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"search\",\"description\":\"Query to search projects by, currently only searching by name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the projects by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectsResourcePath\",\"description\":\"The HTTP path listing owners projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectsUrl\",\"description\":\"The HTTP URL listing owners projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"viewerCanCreateProjects\",\"description\":\"Can the current viewer create new projects on this owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectProgress\",\"description\":\"Project progress stats.\",\"fields\":[{\"name\":\"doneCount\",\"description\":\"The number of done cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"donePercentage\",\"description\":\"The percentage of done cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"enabled\",\"description\":\"Whether progress tracking is enabled and cards with purpose exist for this project\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"inProgressCount\",\"description\":\"The number of in-progress cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"inProgressPercentage\",\"description\":\"The percentage of in-progress cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"todoCount\",\"description\":\"The number of to do cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"todoPercentage\",\"description\":\"The percentage of to do cards.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"description\":\"State of the project; either 'open' or 'closed'\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"The project is open.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"The project is closed.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectTemplate\",\"description\":\"GitHub-provided templates for Projects\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"BASIC_KANBAN\",\"description\":\"Create a board with columns for To do, In progress and Done.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTOMATED_KANBAN_V2\",\"description\":\"Create a board with v2 triggers to automatically move cards across To do, In progress and Done columns.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTOMATED_REVIEWS_KANBAN\",\"description\":\"Create a board with triggers to automatically move cards across columns with review automation.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BUG_TRIAGE\",\"description\":\"Create a board to triage and prioritize bugs with To do, priority, and Done columns.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"description\":\"New projects that manage issues, pull requests and drafts using tables and boards.\",\"fields\":[{\"name\":\"closed\",\"description\":\"Returns true if the project is closed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who originally created the project.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2025-04-01 UTC.\"},{\"name\":\"field\",\"description\":\"A field of the project\",\"args\":[{\"name\":\"name\",\"description\":\"The name of the field\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fields\",\"description\":\"List of fields and their constraints in the project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for project v2 fields returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2 object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"items\",\"description\":\"List of items in the project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for project v2 items returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ItemOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"},{\"name\":\"query\",\"description\":\"Search query for filtering items\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"The project's number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The project's owner. Currently limited to organizations and users.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"public\",\"description\":\"Returns true if the project is public.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"readme\",\"description\":\"The project's readme.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"The repositories the project is linked to.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this project\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescription\",\"description\":\"The project's short description.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusUpdates\",\"description\":\"List of the status updates in the project.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2StatusOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdateConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teams\",\"description\":\"The teams the project is linked to.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for teams returned from this connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamOrder\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"template\",\"description\":\"Returns true if this project is a template.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The project's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this project\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"view\",\"description\":\"A view of the project\",\"args\":[{\"name\":\"number\",\"description\":\"The number of a view belonging to the project\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2View\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"views\",\"description\":\"List of views in the project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for project v2 views returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ViewOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ViewConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"workflow\",\"description\":\"A workflow of the project\",\"args\":[{\"name\":\"number\",\"description\":\"The number of a workflow belonging to the project\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Workflow\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"workflows\",\"description\":\"List of the workflows in the project\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for project v2 workflows returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2WorkflowOrder\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2WorkflowConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ProjectV2Actor\",\"description\":\"Possible collaborators for a project.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ActorConnection\",\"description\":\"The connection type for ProjectV2Actor.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ActorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ActorEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Collaborator\",\"description\":\"A collaborator to update on a project. Only one of the userId or teamId should be provided.\",\"fields\":null,\"inputFields\":[{\"name\":\"userId\",\"description\":\"The ID of the user as a collaborator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"teamId\",\"description\":\"The ID of the team as a collaborator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The role to grant the collaborator\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2Roles\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"description\":\"The connection type for ProjectV2.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Edge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2CustomFieldType\",\"description\":\"The type of a project field.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TEXT\",\"description\":\"Text\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SINGLE_SELECT\",\"description\":\"Single Select\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUMBER\",\"description\":\"Number\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DATE\",\"description\":\"Date\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ITERATION\",\"description\":\"Iteration\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Edge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Event\",\"description\":\"Represents an event related to a project on the timeline of an issue or pull request.\",\"fields\":[{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasAutomated\",\"description\":\"Did this event result from workflow automation?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedFromDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemStatusChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectV2Event\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"description\":\"A field inside a project.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dataType\",\"description\":\"The field's type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2Field object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The project field's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this field.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2FieldCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2FieldCommon\",\"description\":\"Common fields across different project field types\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dataType\",\"description\":\"The field's type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2FieldCommon object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The project field's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this field.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationField\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectField\",\"ofType\":null}]},{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"description\":\"Configurations for project fields.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationField\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectField\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationConnection\",\"description\":\"The connection type for ProjectV2FieldConfiguration.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConnection\",\"description\":\"The connection type for ProjectV2Field.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"description\":\"Ordering options for project v2 field connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order the project v2 fields by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldOrderField\",\"description\":\"Properties by which project v2 field connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"POSITION\",\"description\":\"Order project v2 fields by position\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order project v2 fields by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order project v2 fields by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldType\",\"description\":\"The type of a project field.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ASSIGNEES\",\"description\":\"Assignees\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LINKED_PULL_REQUESTS\",\"description\":\"Linked Pull Requests\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEWERS\",\"description\":\"Reviewers\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LABELS\",\"description\":\"Labels\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MILESTONE\",\"description\":\"Milestone\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REPOSITORY\",\"description\":\"Repository\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TITLE\",\"description\":\"Title\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TEXT\",\"description\":\"Text\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SINGLE_SELECT\",\"description\":\"Single Select\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUMBER\",\"description\":\"Number\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DATE\",\"description\":\"Date\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ITERATION\",\"description\":\"Iteration\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRACKS\",\"description\":\"Tracks\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRACKED_BY\",\"description\":\"Tracked by\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE\",\"description\":\"Issue type\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PARENT_ISSUE\",\"description\":\"Parent issue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUB_ISSUES_PROGRESS\",\"description\":\"Sub-issues progress\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldValue\",\"description\":\"The values that can be used to update a field of an item inside a Project. Only 1 value can be updated at a time.\",\"fields\":null,\"inputFields\":[{\"name\":\"text\",\"description\":\"The text to set on the field.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"number\",\"description\":\"The number to set on the field.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"date\",\"description\":\"The ISO 8601 date to set on the field.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"singleSelectOptionId\",\"description\":\"The id of the single select option to set on the field.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"iterationId\",\"description\":\"The id of the iteration to set on the field.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Filters\",\"description\":\"Ways in which to filter lists of projects.\",\"fields\":null,\"inputFields\":[{\"name\":\"state\",\"description\":\"List project v2 filtered by the state given.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2State\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"description\":\"An item within a Project.\",\"fields\":[{\"name\":\"content\",\"description\":\"The content of the referenced draft issue, issue, or pull request\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemContent\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2025-04-01 UTC.\"},{\"name\":\"fieldValueByName\",\"description\":\"The field value of the first project field which matches the 'name' argument that is set on the item.\",\"args\":[{\"name\":\"name\",\"description\":\"The name of the field to return the field value of\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemFieldValue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fieldValues\",\"description\":\"The field values that are set on the item.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for project v2 item field values returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ItemFieldValueOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldValueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2Item object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isArchived\",\"description\":\"Whether the item is archived.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this item.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"The type of the item.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"description\":\"The connection type for ProjectV2Item.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemContent\",\"description\":\"Types that can be inside Project Items.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"DraftIssue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldDateValue\",\"description\":\"The value of a date field in a Project item.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"date\",\"description\":\"Date value for the field\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldDateValue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldIterationValue\",\"description\":\"The value of an iteration field in a Project item.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duration\",\"description\":\"The duration of the iteration in days.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldIterationValue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"iterationId\",\"description\":\"The ID of the iteration.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDate\",\"description\":\"The start date of the iteration.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The title of the iteration.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"titleHTML\",\"description\":\"The title of the iteration, with HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldLabelValue\",\"description\":\"The value of the labels field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"Labels value of a field\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldMilestoneValue\",\"description\":\"The value of a milestone field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestone\",\"description\":\"Milestone value of a field\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldNumberValue\",\"description\":\"The value of a number field in a Project item.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldNumberValue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Number as a float(8)\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldPullRequestValue\",\"description\":\"The value of a pull request field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequests\",\"description\":\"The pull requests for this field\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PullRequestOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldRepositoryValue\",\"description\":\"The value of a repository field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository for this field.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldReviewerValue\",\"description\":\"The value of a reviewers field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewers\",\"description\":\"The reviewers for this field.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RequestedReviewerConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldSingleSelectValue\",\"description\":\"The value of a single select field in a Project item.\",\"fields\":[{\"name\":\"color\",\"description\":\"The color applied to the selected single-select option.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2SingleSelectFieldOptionColor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"A plain-text description of the selected single-select option, such as what the option means.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The description of the selected single-select option, including HTML tags.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldSingleSelectValue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the selected single select option.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameHTML\",\"description\":\"The html name of the selected single select option.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"optionId\",\"description\":\"The id of the selected single select option.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldTextValue\",\"description\":\"The value of a text field in a Project item.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldTextValue object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"text\",\"description\":\"Text value of a field\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldUserValue\",\"description\":\"The value of a user field in a Project item.\",\"fields\":[{\"name\":\"field\",\"description\":\"The field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"users\",\"description\":\"The users for this field\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemFieldValue\",\"description\":\"Project field values\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldDateValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldIterationValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldLabelValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldMilestoneValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldNumberValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldPullRequestValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldRepositoryValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldReviewerValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldSingleSelectValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldTextValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldUserValue\",\"ofType\":null}]},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2ItemFieldValueCommon\",\"description\":\"Common fields across different project field value types\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the item.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The project field that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemFieldValueCommon object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The project item that contains this value.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldDateValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldIterationValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldNumberValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldSingleSelectValue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldTextValue\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldValueConnection\",\"description\":\"The connection type for ProjectV2ItemFieldValue.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldValueEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemFieldValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemFieldValueEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2ItemFieldValue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ItemFieldValueOrder\",\"description\":\"Ordering options for project v2 item field value connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order the project v2 item field values by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemFieldValueOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemFieldValueOrderField\",\"description\":\"Properties by which project v2 item field value connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"POSITION\",\"description\":\"Order project v2 item field values by the their position in the project\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ItemOrder\",\"description\":\"Ordering options for project v2 item connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order the project v2 items by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemOrderField\",\"description\":\"Properties by which project v2 item connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"POSITION\",\"description\":\"Order project v2 items by the their position in the project\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemStatusChangedEvent\",\"description\":\"Represents a 'project_v2_item_status_changed' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2ItemStatusChangedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousStatus\",\"description\":\"The previous status of the project item.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The new status of the project item.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasAutomated\",\"description\":\"Did this event result from workflow automation?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Event\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2ItemType\",\"description\":\"The type of a project item.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ISSUE\",\"description\":\"Issue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST\",\"description\":\"Pull Request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DRAFT_ISSUE\",\"description\":\"Draft Issue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REDACTED\",\"description\":\"Redacted Item\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Iteration\",\"description\":\"Represents an iteration\",\"fields\":null,\"inputFields\":[{\"name\":\"startDate\",\"description\":\"The start date for the iteration.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"duration\",\"description\":\"The duration of the iteration, in days.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title for the iteration.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationField\",\"description\":\"An iteration field inside a project.\",\"fields\":[{\"name\":\"configuration\",\"description\":\"Iteration configuration settings\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationFieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dataType\",\"description\":\"The field's type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2IterationField object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The project field's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this field.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2FieldCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationFieldConfiguration\",\"description\":\"Iteration field configuration for a project.\",\"fields\":[{\"name\":\"completedIterations\",\"description\":\"The iteration's completed iterations\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationFieldIteration\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duration\",\"description\":\"The iteration's duration in days\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"iterations\",\"description\":\"The iteration's iterations\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationFieldIteration\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDay\",\"description\":\"The iteration's start day of the week\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2IterationFieldConfigurationInput\",\"description\":\"Represents an iteration field configuration.\",\"fields\":null,\"inputFields\":[{\"name\":\"startDate\",\"description\":\"The start date for the first iteration.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"duration\",\"description\":\"The duration of each iteration, in days.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"iterations\",\"description\":\"Zero or more iterations for the field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Iteration\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2IterationFieldIteration\",\"description\":\"Iteration field iteration settings for a project.\",\"fields\":[{\"name\":\"duration\",\"description\":\"The iteration's duration in days\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The iteration's ID.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDate\",\"description\":\"The iteration's start date\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The iteration's title.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"titleHTML\",\"description\":\"The iteration's html title.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"description\":\"Ways in which lists of projects can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order projects by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2OrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order projects by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2OrderField\",\"description\":\"Properties by which projects can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TITLE\",\"description\":\"The project's title\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUMBER\",\"description\":\"The project's number\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"The project's date and time of update\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"The project's date and time of creation\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"description\":\"Represents an owner of a project.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2Owner object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"Find a project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"query\",\"description\":\"A project to search for under the owner.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"description\":\"The possible roles of a collaborator on a project.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"READ\",\"description\":\"The collaborator can view the project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITE\",\"description\":\"The collaborator can view and edit the project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"The collaborator can view, edit, and maange the settings of the project\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Recent\",\"description\":\"Recent projects for the owner.\",\"fields\":[{\"name\":\"recentProjects\",\"description\":\"Recent projects that this user has modified in the context of the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"ProjectV2Roles\",\"description\":\"The possible roles of a collaborator on a project.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NONE\",\"description\":\"The collaborator has no direct access to the project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READER\",\"description\":\"The collaborator can view the project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITER\",\"description\":\"The collaborator can view and edit the project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADMIN\",\"description\":\"The collaborator can view, edit, and maange the settings of the project\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectField\",\"description\":\"A single select field inside a project.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dataType\",\"description\":\"The field's type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2FieldType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2SingleSelectField object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The project field's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"options\",\"description\":\"Options for the single select field\",\"args\":[{\"name\":\"names\",\"description\":\"Filter returned options to only those matching these names, case insensitive.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectFieldOption\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this field.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2FieldCommon\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SingleSelectFieldOption\",\"description\":\"Single select field option for a configuration for a project.\",\"fields\":[{\"name\":\"color\",\"description\":\"The option's display color.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2SingleSelectFieldOptionColor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The option's plain-text description.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The option's description, possibly containing HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The option's ID.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The option's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameHTML\",\"description\":\"The option's html name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2SingleSelectFieldOptionColor\",\"description\":\"The display color of a single-select field option.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GRAY\",\"description\":\"GRAY\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLUE\",\"description\":\"BLUE\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GREEN\",\"description\":\"GREEN\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"YELLOW\",\"description\":\"YELLOW\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORANGE\",\"description\":\"ORANGE\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RED\",\"description\":\"RED\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PINK\",\"description\":\"PINK\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PURPLE\",\"description\":\"PURPLE\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2SingleSelectFieldOptionInput\",\"description\":\"Represents a single select field option\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"The name of the option\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"color\",\"description\":\"The display color of the option\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2SingleSelectFieldOptionColor\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"The description text of the option\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortBy\",\"description\":\"Represents a sort by field and direction.\",\"fields\":[{\"name\":\"direction\",\"description\":\"The direction of the sorting. Possible values are ASC and DESC.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The field by which items are sorted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Field\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByConnection\",\"description\":\"The connection type for ProjectV2SortBy.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortBy\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortBy\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByField\",\"description\":\"Represents a sort by field and direction.\",\"fields\":[{\"name\":\"direction\",\"description\":\"The direction of the sorting. Possible values are ASC and DESC.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"field\",\"description\":\"The field by which items are sorted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByFieldConnection\",\"description\":\"The connection type for ProjectV2SortByField.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByFieldEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByField\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByFieldEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByField\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2State\",\"description\":\"The possible states of a project v2.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"A project v2 that is still open\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"A project v2 that has been closed\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2StatusOrder\",\"description\":\"Ways in which project v2 status updates can be ordered.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"description\":\"A status update within a project.\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the status update.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body of the status update rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created the status update.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2025-04-01 UTC.\"},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2StatusUpdate object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this status update.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDate\",\"description\":\"The start date of the status update.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The status of the status update.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"targetDate\",\"description\":\"The target date of the status update.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdateConnection\",\"description\":\"The connection type for ProjectV2StatusUpdate.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdateEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdateEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateOrderField\",\"description\":\"Properties by which project v2 status updates can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Allows chronological ordering of project v2 status updates.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateStatus\",\"description\":\"The possible statuses of a project v2.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INACTIVE\",\"description\":\"A project v2 that is inactive.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ON_TRACK\",\"description\":\"A project v2 that is on track with no risks.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AT_RISK\",\"description\":\"A project v2 that is at risk and encountering some challenges.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OFF_TRACK\",\"description\":\"A project v2 that is off track and needs attention.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPLETE\",\"description\":\"A project v2 that is complete.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2View\",\"description\":\"A view within a ProjectV2.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2025-04-01 UTC.\"},{\"name\":\"fields\",\"description\":\"The view's visible fields.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filter\",\"description\":\"The project view's filter.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"groupBy\",\"description\":\"The view's group-by field.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConnection\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The `ProjectV2View#order_by` API is deprecated in favour of the more capable `ProjectV2View#group_by_field` API. Check out the `ProjectV2View#group_by_fields` API as an example for the more capable alternative. Removal on 2023-04-01 UTC.\"},{\"name\":\"groupByFields\",\"description\":\"The view's group-by field.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2View object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"layout\",\"description\":\"The project view's layout.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2ViewLayout\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The project view's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"The project view's number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this view.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sortBy\",\"description\":\"The view's sort-by config.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByConnection\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The `ProjectV2View#sort_by` API is deprecated in favour of the more capable `ProjectV2View#sort_by_fields` API. Check out the `ProjectV2View#sort_by_fields` API as an example for the more capable alternative. Removal on 2023-04-01 UTC.\"},{\"name\":\"sortByFields\",\"description\":\"The view's sort-by config.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2SortByFieldConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verticalGroupBy\",\"description\":\"The view's vertical-group-by field.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConnection\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The `ProjectV2View#vertical_group_by` API is deprecated in favour of the more capable `ProjectV2View#vertical_group_by_fields` API. Check out the `ProjectV2View#vertical_group_by_fields` API as an example for the more capable alternative. Removal on 2023-04-01 UTC.\"},{\"name\":\"verticalGroupByFields\",\"description\":\"The view's vertical-group-by field.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConfigurationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"visibleFields\",\"description\":\"The view's visible fields.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the project v2 fields returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2FieldConnection\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The `ProjectV2View#visibleFields` API is deprecated in favour of the more capable `ProjectV2View#fields` API. Check out the `ProjectV2View#fields` API as an example for the more capable alternative. Removal on 2023-01-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ViewConnection\",\"description\":\"The connection type for ProjectV2View.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ViewEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2View\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ViewEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2View\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2ViewLayout\",\"description\":\"The layout of a project v2 view.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"BOARD_LAYOUT\",\"description\":\"Board layout\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TABLE_LAYOUT\",\"description\":\"Table layout\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ROADMAP_LAYOUT\",\"description\":\"Roadmap layout\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2ViewOrder\",\"description\":\"Ordering options for project v2 view connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order the project v2 views by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2ViewOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2ViewOrderField\",\"description\":\"Properties by which project v2 view connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"POSITION\",\"description\":\"Order project v2 views by position\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order project v2 views by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order project v2 views by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Workflow\",\"description\":\"A workflow inside a project.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2025-04-01 UTC.\"},{\"name\":\"enabled\",\"description\":\"Whether the workflow is enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ProjectV2Workflow object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"The number of the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The project that contains this workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2WorkflowConnection\",\"description\":\"The connection type for ProjectV2Workflow.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2WorkflowEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Workflow\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2WorkflowEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Workflow\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2WorkflowOrder\",\"description\":\"Ordering options for project v2 workflows connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order the project v2 workflows by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2WorkflowsOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ProjectV2WorkflowsOrderField\",\"description\":\"Properties by which project workflows can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NAME\",\"description\":\"The name of the workflow\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUMBER\",\"description\":\"The number of the workflow\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"The date and time of the workflow update\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"The date and time of the workflow creation\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PropertyTargetDefinition\",\"description\":\"A property that must match\",\"fields\":[{\"name\":\"name\",\"description\":\"The name of the property\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"propertyValues\",\"description\":\"The values to match for\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"The source of the property. Choose 'custom' or 'system'. Defaults to 'custom' if not specified\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PropertyTargetDefinitionInput\",\"description\":\"A property that must match\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"The name of the property\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"propertyValues\",\"description\":\"The values to match for\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"source\",\"description\":\"The source of the property. Choose 'custom' or 'system'. Defaults to 'custom' if not specified\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PublicKey\",\"description\":\"A user's public key.\",\"fields\":[{\"name\":\"accessedAt\",\"description\":\"The last time this authorization was used to perform an action. Values will be null for keys not owned by the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the key was created. Keys created before March 5th, 2014 have inaccurate values. Values will be null for keys not owned by the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fingerprint\",\"description\":\"The fingerprint for this PublicKey.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PublicKey object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isReadOnly\",\"description\":\"Whether this PublicKey is read-only or not. Values will be null for keys not owned by the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"key\",\"description\":\"The public key string.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the key was updated. Keys created before March 5th, 2014 may have inaccurate values. Values will be null for keys not owned by the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PublicKeyConnection\",\"description\":\"The connection type for PublicKey.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PublicKeyEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PublicKey\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PublicKeyEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PublicKey\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PublishSponsorsTierInput\",\"description\":\"Autogenerated input type of PublishSponsorsTier\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"The ID of the draft tier to publish.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PublishSponsorsTierPayload\",\"description\":\"Autogenerated return type of PublishSponsorsTier.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsTier\",\"description\":\"The tier that was published.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"description\":\"A repository pull request.\",\"fields\":[{\"name\":\"activeLockReason\",\"description\":\"Reason that the conversation was locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"LockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"additions\",\"description\":\"The number of additions in this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignedActors\",\"description\":\"A list of actors assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignees\",\"description\":\"A list of Users assigned to this object.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"autoMergeRequest\",\"description\":\"Returns the auto-merge request object if one exists for this pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"AutoMergeRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseRef\",\"description\":\"Identifies the base Ref associated with the pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseRefName\",\"description\":\"Identifies the name of the base Ref associated with the pull request, even if the ref has been deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseRefOid\",\"description\":\"Identifies the oid of the base ref associated with the pull request, even if the ref has been deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"baseRepository\",\"description\":\"The repository associated with this pull request's base Ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"canBeRebased\",\"description\":\"Whether or not the pull request is rebaseable.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"changedFiles\",\"description\":\"The number of changed files in this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checksResourcePath\",\"description\":\"The HTTP path for the checks of this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checksUrl\",\"description\":\"The HTTP URL for the checks of this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closed\",\"description\":\"`true` if the pull request is closed\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closedAt\",\"description\":\"Identifies the date and time when the object was closed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closingIssuesReferences\",\"description\":\"List of issues that may be closed by this pull request\",\"args\":[{\"name\":\"userLinkedOnly\",\"description\":\"Return only manually linked Issues\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comments\",\"description\":\"A list of comments associated with the pull request.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issue comments returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueCommentOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commits\",\"description\":\"A list of commits present in this pull request's head branch not present in the base branch.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2024-07-01 UTC.\"},{\"name\":\"deletions\",\"description\":\"The number of deletions in this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited this pull request's body.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"files\",\"description\":\"Lists the files changed within this pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFileConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRef\",\"description\":\"Identifies the head Ref associated with the pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRefName\",\"description\":\"Identifies the name of the head Ref associated with the pull request, even if the ref has been deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRefOid\",\"description\":\"Identifies the oid of the head ref associated with the pull request, even if the ref has been deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRepository\",\"description\":\"The repository associated with this pull request's head Ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"headRepositoryOwner\",\"description\":\"The owner of the repository associated with this pull request's head Ref.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hovercard\",\"description\":\"The hovercard information for this issue\",\"args\":[{\"name\":\"includeNotificationContexts\",\"description\":\"Whether or not to include notification contexts\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Hovercard\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequest object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"The head and base repositories are different.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDraft\",\"description\":\"Identifies if the pull request is a draft.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isInMergeQueue\",\"description\":\"Indicates whether the pull request is in a merge queue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMergeQueueEnabled\",\"description\":\"Indicates whether the pull request's base ref has a merge queue enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isReadByViewer\",\"description\":\"Is this pull request read by the viewer\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"A list of labels associated with the object.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestOpinionatedReviews\",\"description\":\"A list of latest reviews per user associated with the pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"writersOnly\",\"description\":\"Only return reviews from user who have write access to the repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestReviews\",\"description\":\"A list of latest reviews per user associated with the pull request that are not also pending review.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"locked\",\"description\":\"`true` if the pull request is locked\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maintainerCanModify\",\"description\":\"Indicates whether maintainers can modify the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeCommit\",\"description\":\"The commit that was created when this pull request was merged.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueue\",\"description\":\"The merge queue for the pull request's base branch\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueueEntry\",\"description\":\"The merge queue entry of the pull request in the base branch's merge queue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueueEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeStateStatus\",\"description\":\"Detailed information about the current pull request merge state status.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeStateStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeable\",\"description\":\"Whether or not the pull request can be merged based on the existence of merge conflicts.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeableState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"merged\",\"description\":\"Whether or not the pull request was merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergedAt\",\"description\":\"The date and time that the pull request was merged.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergedBy\",\"description\":\"The actor who merged the pull request.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestone\",\"description\":\"Identifies the milestone associated with the pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the pull request number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"participants\",\"description\":\"A list of Users that are participating in the Pull Request conversation.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permalink\",\"description\":\"The permalink to the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"potentialMergeCommit\",\"description\":\"The commit that GitHub automatically generated to test if this pull request could be merged. This field will not return a value if the pull request is merged, or if the test merge commit is still being generated. See the `mergeable` field for more details on the mergeability of the pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectCards\",\"description\":\"List of project cards associated with this pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"archivedStates\",\"description\":\"A list of archived states to filter the cards by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectCardArchivedState\",\"ofType\":null}},\"defaultValue\":\"[ARCHIVED, NOT_ARCHIVED]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCardConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectItems\",\"description\":\"List of project items associated with this pull request.\",\"args\":[{\"name\":\"includeArchived\",\"description\":\"Include archived items.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"Find a project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"query\",\"description\":\"A project to search for under the owner.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revertResourcePath\",\"description\":\"The HTTP path for reverting this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revertUrl\",\"description\":\"The HTTP URL for reverting this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewDecision\",\"description\":\"The current status of this pull request with respect to code review.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewDecision\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewRequests\",\"description\":\"A list of review requests associated with the pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewThreads\",\"description\":\"The list of all review threads for this pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThreadConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviews\",\"description\":\"A list of reviews associated with the pull request.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the reviews.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"author\",\"description\":\"Filter by author of the review.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the state of the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusCheckRollup\",\"description\":\"Check and Status rollup information for the PR's head ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollup\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedActors\",\"description\":\"A list of suggested actors to assign to this object\",\"args\":[{\"name\":\"query\",\"description\":\"If provided, searches users by login or profile name\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"AssigneeConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedReviewerActors\",\"description\":\"Reviewer actor suggestions based on commit history, past review comments, and integrations.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedReviewers\",\"description\":\"A list of reviewer suggestions based on commit history and past review comments.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewer\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"timeline\",\"description\":\"A list of events, comments, commits, etc. associated with the pull request.\",\"args\":[{\"name\":\"since\",\"description\":\"Allows filtering timeline events by a `since` timestamp.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`timeline` will be removed Use PullRequest.timelineItems instead. Removal on 2020-10-01 UTC.\"},{\"name\":\"timelineItems\",\"description\":\"A list of events, comments, commits, etc. associated with the pull request.\",\"args\":[{\"name\":\"since\",\"description\":\"Filter timeline items by a `since` timestamp.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"skip\",\"description\":\"Skips the first _n_ elements in the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"itemTypes\",\"description\":\"Filter timeline items by type.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestTimelineItemsItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemsConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"Identifies the pull request title.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"titleHTML\",\"description\":\"Identifies the pull request title rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCommentsCount\",\"description\":\"Returns a count of how many comments this pull request has received.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanApplySuggestion\",\"description\":\"Whether or not the viewer can apply suggestion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanClose\",\"description\":\"Indicates if the object can be closed by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDeleteHeadRef\",\"description\":\"Check if the viewer can restore the deleted head ref.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDisableAutoMerge\",\"description\":\"Whether or not the viewer can disable auto-merge\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanEditFiles\",\"description\":\"Can the viewer edit files within this pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanEnableAutoMerge\",\"description\":\"Whether or not the viewer can enable auto-merge\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanLabel\",\"description\":\"Indicates if the viewer can edit labels for this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMergeAsAdmin\",\"description\":\"Indicates whether the viewer can bypass branch protections and merge the pull request immediately\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReopen\",\"description\":\"Indicates if the object can be reopened by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdateBranch\",\"description\":\"Whether or not the viewer can update the head ref of this PR, by merging or rebasing the base ref.\\nIf the head ref is up to date or unable to be updated by this user, this will return false.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerLatestReview\",\"description\":\"The latest review given from the viewer.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerLatestReviewRequest\",\"description\":\"The person who has requested the viewer for review on this pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReviewRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerMergeBodyText\",\"description\":\"The merge body text for the viewer and method.\",\"args\":[{\"name\":\"mergeType\",\"description\":\"The merge method for the message.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerMergeHeadlineText\",\"description\":\"The merge headline text for the viewer and method.\",\"args\":[{\"name\":\"mergeType\",\"description\":\"The merge method for the message.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestAllowedMergeMethods\",\"description\":\"Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGE\",\"description\":\"Add all commits from the head branch to the base branch with a merge commit.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SQUASH\",\"description\":\"Combine all commits from the head branch into a single commit in the base branch.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REBASE\",\"description\":\"Add all commits from the head branch onto the base branch individually.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestBranchUpdateMethod\",\"description\":\"The possible methods for updating a pull request's head branch with the base branch.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGE\",\"description\":\"Update branch via merge\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REBASE\",\"description\":\"Update branch via rebase\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFile\",\"description\":\"A file changed in a pull request.\",\"fields\":[{\"name\":\"additions\",\"description\":\"The number of additions to the file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"changeType\",\"description\":\"How the file was changed in this PullRequest\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PatchStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletions\",\"description\":\"The number of deletions to the file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path of the file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerViewedState\",\"description\":\"The state of the file for the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"FileViewedState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFileConnection\",\"description\":\"The connection type for PullRequestChangedFile.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFileEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFile\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFileEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestChangedFile\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"description\":\"Represents a Git commit part of a pull request.\",\"fields\":[{\"name\":\"commit\",\"description\":\"The Git commit object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestCommit object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request this commit belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this pull request commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this pull request commit\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitCommentThread\",\"description\":\"Represents a commit comment thread part of a pull request.\",\"fields\":[{\"name\":\"comments\",\"description\":\"The comments that exist in this thread.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"The commit the comments were made on.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestCommitCommentThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The file the comments were made on.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"The position in the diff for the commit that the comment was made on.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request this commit comment thread belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitConnection\",\"description\":\"The connection type for PullRequestCommit.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"description\":\"The connection type for PullRequest.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestContributionsByRepository\",\"description\":\"This aggregates pull requests opened by a user within one repository.\",\"fields\":[{\"name\":\"contributions\",\"description\":\"The pull request contributions.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository in which the pull requests were opened.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"description\":\"Represents available types of methods to use when merging a pull request.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGE\",\"description\":\"Add all commits from the head branch to the base branch with a merge commit.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SQUASH\",\"description\":\"Combine all commits from the head branch into a single commit in the base branch.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REBASE\",\"description\":\"Add all commits from the head branch onto the base branch individually.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PullRequestOrder\",\"description\":\"Ways in which lists of issues can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order pull requests by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order pull requests by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestOrderField\",\"description\":\"Properties by which pull_requests connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order pull_requests by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order pull_requests by update time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestParameters\",\"description\":\"Require all commits be made to a non-target branch and submitted via a pull request before they can be merged.\",\"fields\":[{\"name\":\"allowedMergeMethods\",\"description\":\"Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestAllowedMergeMethods\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissStaleReviewsOnPush\",\"description\":\"New, reviewable commits pushed will dismiss previous pull request review approvals.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requireCodeOwnerReview\",\"description\":\"Require an approving review in pull requests that modify files that have a designated code owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requireLastPushApproval\",\"description\":\"Whether the most recent reviewable push must be approved by someone other than the person who pushed it.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"The number of approving reviews that are required before a pull request can be merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredReviewThreadResolution\",\"description\":\"All conversations on code must be resolved before a pull request can be merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredReviewers\",\"description\":\"This field is in beta and subject to change. A collection of reviewers and associated file patterns. Each reviewer has a list of file patterns which determine the files that reviewer is required to review.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RequiredReviewerConfiguration\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"PullRequestParametersInput\",\"description\":\"Require all commits be made to a non-target branch and submitted via a pull request before they can be merged.\",\"fields\":null,\"inputFields\":[{\"name\":\"allowedMergeMethods\",\"description\":\"Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestAllowedMergeMethods\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"dismissStaleReviewsOnPush\",\"description\":\"New, reviewable commits pushed will dismiss previous pull request review approvals.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requireCodeOwnerReview\",\"description\":\"Require an approving review in pull requests that modify files that have a designated code owner.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requireLastPushApproval\",\"description\":\"Whether the most recent reviewable push must be approved by someone other than the person who pushed it.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"The number of approving reviews that are required before a pull request can be merged.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requiredReviewThreadResolution\",\"description\":\"All conversations on code must be resolved before a pull request can be merged.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"requiredReviewers\",\"description\":\"This argument is in beta and subject to change. A collection of reviewers and associated file patterns. Each reviewer has a list of file patterns which determine the files that reviewer is required to review.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredReviewerConfigurationInput\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"description\":\"A review object for a given pull request.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorCanPushToRepository\",\"description\":\"Indicates whether the author of this review has push access to the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"Identifies the pull request review body.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body of this review rendered as plain text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comments\",\"description\":\"A list of review comments for the current pull request review.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the commit associated with this pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2024-07-01 UTC.\"},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestReview object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"onBehalfOf\",\"description\":\"A list of teams that this review was made on behalf of.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Identifies the pull request associated with this pull request review.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path permalink for this PullRequestReview.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the current state of the pull request review.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"submittedAt\",\"description\":\"Identifies when the Pull Request Review was submitted\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL permalink for this PullRequestReview.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"description\":\"A review comment associated with a given repository pull request.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the subject of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The comment body of this review comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The comment body of this review comment rendered as plain text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the commit associated with the comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies when the comment was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`databaseId` will be removed because it does not support 64-bit signed integer identifiers. Use `fullDatabaseId` instead. Removal on 2024-07-01 UTC.\"},{\"name\":\"diffHunk\",\"description\":\"The diff hunk to which the comment applies.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"draftedAt\",\"description\":\"Identifies when the comment was created in a draft state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDatabaseId\",\"description\":\"Identifies the primary key from the database as a BigInt.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"BigInt\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestReviewComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMinimized\",\"description\":\"Returns whether or not a comment has been minimized.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"line\",\"description\":\"The end line number on the file to which the comment applies\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimizedReason\",\"description\":\"Returns why the comment was minimized. One of `abuse`, `off-topic`, `outdated`, `resolved`, `duplicate` and `spam`. Note that the case and formatting of these values differs from the inputs to the `MinimizeComment` mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalCommit\",\"description\":\"Identifies the original commit associated with the comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalLine\",\"description\":\"The end line number on the file to which the comment applied when it was first created\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalPosition\",\"description\":\"The original line index in the diff to which the comment applies.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"We are phasing out diff-relative positioning for PR comments Removal on 2023-10-01 UTC.\"},{\"name\":\"originalStartLine\",\"description\":\"The start line number on the file to which the comment applied when it was first created\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"outdated\",\"description\":\"Identifies when the comment body is outdated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path to which the comment applies.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"The line index in the diff to which the comment applies.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"We are phasing out diff-relative positioning for PR comments Use the `line` and `startLine` fields instead, which are file line numbers instead of diff line numbers Removal on 2023-10-01 UTC.\"},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request associated with this review comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The pull request review associated with this review comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"replyTo\",\"description\":\"The comment this is a reply to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path permalink for this review comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startLine\",\"description\":\"The start line number on the file to which the comment applies\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the state of the comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewCommentState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subjectType\",\"description\":\"The level at which the comments in the corresponding thread are targeted, can be a diff line or a file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewThreadSubjectType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies when the comment was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL permalink for this review comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanMinimize\",\"description\":\"Check if the current viewer can minimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnminimize\",\"description\":\"Check if the current viewer can unminimize this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentConnection\",\"description\":\"The connection type for PullRequestReviewComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewCommentState\",\"description\":\"The possible states of a pull request review comment.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PENDING\",\"description\":\"A comment that is part of a pending review\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBMITTED\",\"description\":\"A comment that is part of a submitted review\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewConnection\",\"description\":\"The connection type for PullRequestReview.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewContributionsByRepository\",\"description\":\"This aggregates pull request reviews made by a user within one repository.\",\"fields\":[{\"name\":\"contributions\",\"description\":\"The pull request review contributions.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for contributions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ContributionOrder\",\"ofType\":null},\"defaultValue\":\"{direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CreatedPullRequestReviewContributionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository in which the pull request reviews were made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewDecision\",\"description\":\"The review status of a pull request.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CHANGES_REQUESTED\",\"description\":\"Changes have been requested on the pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"APPROVED\",\"description\":\"The pull request has received an approving review.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEW_REQUIRED\",\"description\":\"A review is required before the pull request can be merged.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewEvent\",\"description\":\"The possible events to perform on a pull request review.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"COMMENT\",\"description\":\"Submit general feedback without explicit approval.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"APPROVE\",\"description\":\"Submit feedback and approve merging these changes.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUEST_CHANGES\",\"description\":\"Submit feedback that must be addressed before merging.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISMISS\",\"description\":\"Dismiss review so it now longer effects merging.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewState\",\"description\":\"The possible states of a pull request review.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PENDING\",\"description\":\"A review that has not yet been submitted.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMENTED\",\"description\":\"An informational review.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"APPROVED\",\"description\":\"A review allowing the pull request to merge.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CHANGES_REQUESTED\",\"description\":\"A review blocking the pull request from merging.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISMISSED\",\"description\":\"A review that has been dismissed.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"description\":\"A threaded list of comments for a given pull request.\",\"fields\":[{\"name\":\"comments\",\"description\":\"A list of pull request comments associated with the thread.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"skip\",\"description\":\"Skips the first _n_ elements in the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"diffSide\",\"description\":\"The side of the diff on which this thread was placed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestReviewThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCollapsed\",\"description\":\"Whether or not the thread has been collapsed (resolved)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOutdated\",\"description\":\"Indicates whether this thread was outdated by newer changes.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isResolved\",\"description\":\"Whether this thread has been resolved\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"line\",\"description\":\"The line in the file to which this thread refers\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalLine\",\"description\":\"The original line in the file to which this thread refers.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"originalStartLine\",\"description\":\"The original start line in the file to which this thread refers (multi-line only).\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"Identifies the file path of this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Identifies the pull request associated with this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Identifies the repository associated with this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resolvedBy\",\"description\":\"The user who resolved this thread\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDiffSide\",\"description\":\"The side of the diff that the first line of the thread starts on (multi-line only)\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startLine\",\"description\":\"The start line in the file to which this thread refers (multi-line only)\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subjectType\",\"description\":\"The level at which the comments in the corresponding thread are targeted, can be a diff line or a file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewThreadSubjectType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReply\",\"description\":\"Indicates whether the current viewer can reply to this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanResolve\",\"description\":\"Whether or not the viewer can resolve this thread\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnresolve\",\"description\":\"Whether or not the viewer can unresolve this thread\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThreadConnection\",\"description\":\"Review comment threads for a pull request review.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThreadEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThreadEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewThreadSubjectType\",\"description\":\"The possible subject types of a pull request review comment.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LINE\",\"description\":\"A comment that has been made against the line of a pull request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FILE\",\"description\":\"A comment that has been made against the file of a pull request\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestRevisionMarker\",\"description\":\"Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastSeenCommit\",\"description\":\"The last commit the viewer has seen.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request to which the marker belongs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"description\":\"The possible states of a pull request.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"A pull request that is still open.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"A pull request that has been closed without being merged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGED\",\"description\":\"A pull request that has been closed by being merged.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestTemplate\",\"description\":\"A repository pull request template.\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the template\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filename\",\"description\":\"The filename of the template\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the template belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestThread\",\"description\":\"A threaded list of comments for a given pull request.\",\"fields\":[{\"name\":\"comments\",\"description\":\"A list of pull request comments associated with the thread.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"skip\",\"description\":\"Skips the first _n_ elements in the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"diffSide\",\"description\":\"The side of the diff on which this thread was placed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PullRequestThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCollapsed\",\"description\":\"Whether or not the thread has been collapsed (resolved)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOutdated\",\"description\":\"Indicates whether this thread was outdated by newer changes.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isResolved\",\"description\":\"Whether this thread has been resolved\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"line\",\"description\":\"The line in the file to which this thread refers\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"Identifies the file path of this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Identifies the pull request associated with this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Identifies the repository associated with this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resolvedBy\",\"description\":\"The user who resolved this thread\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startDiffSide\",\"description\":\"The side of the diff that the first line of the thread starts on (multi-line only)\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"DiffSide\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"startLine\",\"description\":\"The line of the first file diff in the thread.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subjectType\",\"description\":\"The level at which the comments in the corresponding thread are targeted, can be a diff line or a file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewThreadSubjectType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReply\",\"description\":\"Indicates whether the current viewer can reply to this thread.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanResolve\",\"description\":\"Whether or not the viewer can resolve this thread\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUnresolve\",\"description\":\"Whether or not the viewer can unresolve this thread\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineConnection\",\"description\":\"The connection type for PullRequestTimelineItem.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItem\",\"description\":\"An item in a pull request timeline\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentEnvironmentChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefRestoredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItem\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItems\",\"description\":\"An item in a pull request timeline\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"AddedToMergeQueueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AddedToProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AssignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeDisabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoMergeEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoRebaseEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutoSquashEnabledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeFailedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"AutomaticBaseChangeSucceededEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BaseRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockedByRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"BlockingRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommentDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertToDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedFromDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedNoteToIssueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertedToDiscussionEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DemilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeployedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DeploymentEnvironmentChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DisconnectedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefDeletedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefForcePushedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"HeadRefRestoredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueTypeRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"LockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MentionedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MilestonedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MovedColumnsInProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ParentIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemStatusChangedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestRevisionMarker\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReadyForReviewEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromMergeQueueEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectV2Event\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueAddedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueRemovedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferredEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkedAsDuplicateEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnpinnedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemsConnection\",\"description\":\"The connection type for PullRequestTimelineItems.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemsEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"filteredCount\",\"description\":\"Identifies the count of items after applying `before` and `after` filters.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItems\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageCount\",\"description\":\"Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the timeline was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestTimelineItemsEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"PullRequestTimelineItems\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestTimelineItemsItemType\",\"description\":\"The possible item types found in a timeline.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PULL_REQUEST_COMMIT\",\"description\":\"Represents a Git commit part of a pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST_COMMIT_COMMENT_THREAD\",\"description\":\"Represents a commit comment thread part of a pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST_REVIEW\",\"description\":\"A review object for a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST_REVIEW_THREAD\",\"description\":\"A threaded list of comments for a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST_REVISION_MARKER\",\"description\":\"Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADDED_TO_MERGE_QUEUE_EVENT\",\"description\":\"Represents an 'added_to_merge_queue' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTOMATIC_BASE_CHANGE_FAILED_EVENT\",\"description\":\"Represents a 'automatic_base_change_failed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTOMATIC_BASE_CHANGE_SUCCEEDED_EVENT\",\"description\":\"Represents a 'automatic_base_change_succeeded' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTO_MERGE_DISABLED_EVENT\",\"description\":\"Represents a 'auto_merge_disabled' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTO_MERGE_ENABLED_EVENT\",\"description\":\"Represents a 'auto_merge_enabled' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTO_REBASE_ENABLED_EVENT\",\"description\":\"Represents a 'auto_rebase_enabled' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTO_SQUASH_ENABLED_EVENT\",\"description\":\"Represents a 'auto_squash_enabled' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BASE_REF_CHANGED_EVENT\",\"description\":\"Represents a 'base_ref_changed' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BASE_REF_FORCE_PUSHED_EVENT\",\"description\":\"Represents a 'base_ref_force_pushed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BASE_REF_DELETED_EVENT\",\"description\":\"Represents a 'base_ref_deleted' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERT_TO_DRAFT_EVENT\",\"description\":\"Represents a 'convert_to_draft' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DEPLOYED_EVENT\",\"description\":\"Represents a 'deployed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT\",\"description\":\"Represents a 'deployment_environment_changed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEAD_REF_DELETED_EVENT\",\"description\":\"Represents a 'head_ref_deleted' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEAD_REF_FORCE_PUSHED_EVENT\",\"description\":\"Represents a 'head_ref_force_pushed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEAD_REF_RESTORED_EVENT\",\"description\":\"Represents a 'head_ref_restored' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGED_EVENT\",\"description\":\"Represents a 'merged' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READY_FOR_REVIEW_EVENT\",\"description\":\"Represents a 'ready_for_review' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVED_FROM_MERGE_QUEUE_EVENT\",\"description\":\"Represents a 'removed_from_merge_queue' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEW_DISMISSED_EVENT\",\"description\":\"Represents a 'review_dismissed' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEW_REQUESTED_EVENT\",\"description\":\"Represents an 'review_requested' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REVIEW_REQUEST_REMOVED_EVENT\",\"description\":\"Represents an 'review_request_removed' event on a given pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_COMMENT\",\"description\":\"Represents a comment on an Issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CROSS_REFERENCED_EVENT\",\"description\":\"Represents a mention made by one issue or pull request to another.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADDED_TO_PROJECT_EVENT\",\"description\":\"Represents a 'added_to_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ADDED_TO_PROJECT_V2_EVENT\",\"description\":\"Represents a 'added_to_project_v2' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ASSIGNED_EVENT\",\"description\":\"Represents an 'assigned' event on any assignable object.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED_EVENT\",\"description\":\"Represents a 'closed' event on any `Closable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMENT_DELETED_EVENT\",\"description\":\"Represents a 'comment_deleted' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONNECTED_EVENT\",\"description\":\"Represents a 'connected' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_FROM_DRAFT_EVENT\",\"description\":\"Represents a 'converted_from_draft' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_NOTE_TO_ISSUE_EVENT\",\"description\":\"Represents a 'converted_note_to_issue' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONVERTED_TO_DISCUSSION_EVENT\",\"description\":\"Represents a 'converted_to_discussion' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DEMILESTONED_EVENT\",\"description\":\"Represents a 'demilestoned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISCONNECTED_EVENT\",\"description\":\"Represents a 'disconnected' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LABELED_EVENT\",\"description\":\"Represents a 'labeled' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOCKED_EVENT\",\"description\":\"Represents a 'locked' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MARKED_AS_DUPLICATE_EVENT\",\"description\":\"Represents a 'marked_as_duplicate' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MENTIONED_EVENT\",\"description\":\"Represents a 'mentioned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MILESTONED_EVENT\",\"description\":\"Represents a 'milestoned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MOVED_COLUMNS_IN_PROJECT_EVENT\",\"description\":\"Represents a 'moved_columns_in_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PINNED_EVENT\",\"description\":\"Represents a 'pinned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PROJECT_V2_ITEM_STATUS_CHANGED_EVENT\",\"description\":\"Represents a 'project_v2_item_status_changed' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REFERENCED_EVENT\",\"description\":\"Represents a 'referenced' event on a given `ReferencedSubject`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVED_FROM_PROJECT_EVENT\",\"description\":\"Represents a 'removed_from_project' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REMOVED_FROM_PROJECT_V2_EVENT\",\"description\":\"Represents a 'removed_from_project_v2' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RENAMED_TITLE_EVENT\",\"description\":\"Represents a 'renamed' event on a given issue or pull request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REOPENED_EVENT\",\"description\":\"Represents a 'reopened' event on any `Closable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_EVENT\",\"description\":\"Represents a 'subscribed' event on a given `Subscribable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRANSFERRED_EVENT\",\"description\":\"Represents a 'transferred' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNASSIGNED_EVENT\",\"description\":\"Represents an 'unassigned' event on any assignable object.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNLABELED_EVENT\",\"description\":\"Represents an 'unlabeled' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNLOCKED_EVENT\",\"description\":\"Represents an 'unlocked' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER_BLOCKED_EVENT\",\"description\":\"Represents a 'user_blocked' event on a given user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNMARKED_AS_DUPLICATE_EVENT\",\"description\":\"Represents an 'unmarked_as_duplicate' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNPINNED_EVENT\",\"description\":\"Represents an 'unpinned' event on a given issue or pull request.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNSUBSCRIBED_EVENT\",\"description\":\"Represents an 'unsubscribed' event on a given `Subscribable`.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_ADDED_EVENT\",\"description\":\"Represents a 'issue_type_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_REMOVED_EVENT\",\"description\":\"Represents a 'issue_type_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_TYPE_CHANGED_EVENT\",\"description\":\"Represents a 'issue_type_changed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_ADDED_EVENT\",\"description\":\"Represents a 'issue_field_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_REMOVED_EVENT\",\"description\":\"Represents a 'issue_field_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_FIELD_CHANGED_EVENT\",\"description\":\"Represents a 'issue_field_changed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUB_ISSUE_ADDED_EVENT\",\"description\":\"Represents a 'sub_issue_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUB_ISSUE_REMOVED_EVENT\",\"description\":\"Represents a 'sub_issue_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PARENT_ISSUE_ADDED_EVENT\",\"description\":\"Represents a 'parent_issue_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PARENT_ISSUE_REMOVED_EVENT\",\"description\":\"Represents a 'parent_issue_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKED_BY_ADDED_EVENT\",\"description\":\"Represents a 'blocked_by_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKING_ADDED_EVENT\",\"description\":\"Represents a 'blocking_added' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKED_BY_REMOVED_EVENT\",\"description\":\"Represents a 'blocked_by_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLOCKING_REMOVED_EVENT\",\"description\":\"Represents a 'blocking_removed' event on a given issue.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"PullRequestUpdateState\",\"description\":\"The possible target states when updating a pull request.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"A pull request that is still open.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"A pull request that has been closed without being merged.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Push\",\"description\":\"A Git push.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Push object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nextSha\",\"description\":\"The SHA after the push\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permalink\",\"description\":\"The permalink for this push.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousSha\",\"description\":\"The SHA before the push\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pusher\",\"description\":\"The actor who pushed\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that was pushed to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PushAllowance\",\"description\":\"A team, user, or app who has the ability to push to a protected branch.\",\"fields\":[{\"name\":\"actor\",\"description\":\"The actor that can push.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"PushAllowanceActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRule\",\"description\":\"Identifies the branch protection rule associated with the allowed user, team, or app.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the PushAllowance object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"PushAllowanceActor\",\"description\":\"Types that can be an actor.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"PushAllowanceConnection\",\"description\":\"The connection type for PushAllowance.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PushAllowanceEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PushAllowance\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"PushAllowanceEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PushAllowance\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Query\",\"description\":\"The query root of GitHub's GraphQL interface.\",\"fields\":[{\"name\":\"_entities\",\"description\":null,\"args\":[{\"name\":\"representations\",\"description\":null,\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"_Any\",\"ofType\":null}}}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"_Entity\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"codeOfConduct\",\"description\":\"Look up a code of conduct by its key\",\"args\":[{\"name\":\"key\",\"description\":\"The code of conduct's key\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CodeOfConduct\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"codesOfConduct\",\"description\":\"Look up a code of conduct by its key\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CodeOfConduct\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"Look up an enterprise by URL slug.\",\"args\":[{\"name\":\"slug\",\"description\":\"The enterprise URL slug.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"invitationToken\",\"description\":\"The enterprise invitation token.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseAdministratorInvitation\",\"description\":\"Look up a pending enterprise administrator invitation by invitee, enterprise and role.\",\"args\":[{\"name\":\"userLogin\",\"description\":\"The login of the user invited to join the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise the user was invited to join.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The role for the enterprise member invitation.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseAdministratorInvitationByToken\",\"description\":\"Look up a pending enterprise administrator invitation by invitation token.\",\"args\":[{\"name\":\"invitationToken\",\"description\":\"The invitation token sent with the invitation email.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseAdministratorInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseMemberInvitation\",\"description\":\"Look up a pending enterprise unaffiliated member invitation by invitee and enterprise.\",\"args\":[{\"name\":\"userLogin\",\"description\":\"The login of the user invited to join the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise the user was invited to join.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseMemberInvitationByToken\",\"description\":\"Look up a pending enterprise unaffiliated member invitation by invitation token.\",\"args\":[{\"name\":\"invitationToken\",\"description\":\"The invitation token sent with the invitation email.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseMemberInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"ID of the object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"license\",\"description\":\"Look up an open source license by its key\",\"args\":[{\"name\":\"key\",\"description\":\"The license's downcased SPDX ID\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"License\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"licenses\",\"description\":\"Return a list of known open source licenses\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"License\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"marketplaceCategories\",\"description\":\"Get alphabetically sorted list of Marketplace categories\",\"args\":[{\"name\":\"includeCategories\",\"description\":\"Return only the specified categories.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"excludeEmpty\",\"description\":\"Exclude categories with no listings.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"excludeSubcategories\",\"description\":\"Returns top level categories only, excluding any subcategories.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"marketplaceCategory\",\"description\":\"Look up a Marketplace category by its slug.\",\"args\":[{\"name\":\"slug\",\"description\":\"The URL slug of the category.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"useTopicAliases\",\"description\":\"Also check topic aliases for the category slug\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceCategory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"marketplaceListing\",\"description\":\"Look up a single Marketplace listing\",\"args\":[{\"name\":\"slug\",\"description\":\"Select the listing that matches this slug. It's the short name of the listing used in its URL.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"marketplaceListings\",\"description\":\"Look up Marketplace listings\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"categorySlug\",\"description\":\"Select only listings with the given category.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"useTopicAliases\",\"description\":\"Also check topic aliases for the category slug\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"viewerCanAdmin\",\"description\":\"Select listings to which user has admin access. If omitted, listings visible to the\\nviewer are returned.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"adminId\",\"description\":\"Select listings that can be administered by the specified user.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"Select listings for products owned by the specified organization.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"allStates\",\"description\":\"Select listings visible to the viewer even if they are not approved. If omitted or\\nfalse, only approved listings will be returned.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"slugs\",\"description\":\"Select the listings with these slugs, if they are visible to the viewer.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"primaryCategoryOnly\",\"description\":\"Select only listings where the primary category matches the given category slug.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"withFreeTrialsOnly\",\"description\":\"Select only listings that offer a free trial.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListingConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"meta\",\"description\":\"Return information about the GitHub instance\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GitHubMetadata\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"Fetches an object given its ID.\",\"args\":[{\"name\":\"id\",\"description\":\"ID of the object.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"Lookup nodes by a list of IDs.\",\"args\":[{\"name\":\"ids\",\"description\":\"The list of node IDs.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"Lookup a organization by login.\",\"args\":[{\"name\":\"login\",\"description\":\"The organization's login.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rateLimit\",\"description\":\"The client's rate limit information.\",\"args\":[{\"name\":\"dryRun\",\"description\":\"If true, calculate the cost for the query without evaluating it\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RateLimit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"relay\",\"description\":\"Workaround for re-exposing the root query object. (Refer to https://github.com/facebook/relay/issues/112 for more information.)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Query\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Lookup a given repository by the owner and repository name.\",\"args\":[{\"name\":\"owner\",\"description\":\"The login field of a user or organization\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the repository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"followRenames\",\"description\":\"Follow repository renames. If disabled, a repository referenced by its old name will return an error.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryOwner\",\"description\":\"Lookup a repository owner (ie. either a User or an Organization) by login.\",\"args\":[{\"name\":\"login\",\"description\":\"The username to lookup the owner by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resource\",\"description\":\"Lookup resource by a URL.\",\"args\":[{\"name\":\"url\",\"description\":\"The URL.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"search\",\"description\":\"Perform a search across resources, returning a maximum of 1,000 results.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for. GitHub search syntax is supported. For more information, see \\\"[Searching on GitHub](https://docs.github.com/search-github/searching-on-github),\\\" \\\"[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax),\\\" and \\\"[Sorting search results](https://docs.github.com/search-github/getting-started-with-searching-on-github/sorting-search-results).\\\"\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"type\",\"description\":\"The types of search items to search within.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SearchType\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SearchResultItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityAdvisories\",\"description\":\"GitHub Security Advisories\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for the returned topics.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityAdvisoryOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"},{\"name\":\"identifier\",\"description\":\"Filter advisories by identifier, e.g. GHSA or CVE.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityAdvisoryIdentifierFilter\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"publishedSince\",\"description\":\"Filter advisories to those published since a time in the past.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"updatedSince\",\"description\":\"Filter advisories to those updated since a time in the past.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"classifications\",\"description\":\"A list of classifications to filter advisories by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryClassification\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"epssPercentage\",\"description\":\"The EPSS percentage to filter advisories by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"epssPercentile\",\"description\":\"The EPSS percentile to filter advisories by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Float\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityAdvisory\",\"description\":\"Fetch a Security Advisory by its GHSA ID\",\"args\":[{\"name\":\"ghsaId\",\"description\":\"GitHub Security Advisory ID.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityVulnerabilities\",\"description\":\"Software Vulnerabilities documented by GitHub Security Advisories\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for the returned topics.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityVulnerabilityOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"},{\"name\":\"ecosystem\",\"description\":\"An ecosystem to filter vulnerabilities by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryEcosystem\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"package\",\"description\":\"A package name to filter vulnerabilities by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"severities\",\"description\":\"A list of severities to filter vulnerabilities by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisorySeverity\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"classifications\",\"description\":\"A list of advisory classifications to filter vulnerabilities by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryClassification\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerabilityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorables\",\"description\":\"Users and organizations who can be sponsored via GitHub Sponsors.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for users and organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorableOrder\",\"ofType\":null},\"defaultValue\":\"{field: LOGIN, direction: ASC}\"},{\"name\":\"onlyDependencies\",\"description\":\"Whether only sponsorables who own the viewer's dependencies will be returned. Must be authenticated to use. Can check an organization instead for their dependencies owned by sponsorables by passing orgLoginForDependencies.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orgLoginForDependencies\",\"description\":\"Optional organization username for whose dependencies should be checked. Used when onlyDependencies = true. Omit to check your own dependencies. If you are not an administrator of the organization, only dependencies from its public repositories will be considered.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"dependencyEcosystem\",\"description\":\"Optional filter for which dependencies should be checked for sponsorable owners. Only sponsorable owners of dependencies in this ecosystem will be included. Used when onlyDependencies = true.\\n\\n**Upcoming Change on 2022-07-01 UTC**\\n**Description:** `dependencyEcosystem` will be removed. Use the ecosystem argument instead.\\n**Reason:** The type is switching from SecurityAdvisoryEcosystem to DependencyGraphEcosystem.\\n\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryEcosystem\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ecosystem\",\"description\":\"Optional filter for which dependencies should be checked for sponsorable owners. Only sponsorable owners of dependencies in this ecosystem will be included. Used when onlyDependencies = true.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"DependencyGraphEcosystem\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"Look up a topic by name.\",\"args\":[{\"name\":\"name\",\"description\":\"The topic's name.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"Lookup a user by login.\",\"args\":[{\"name\":\"login\",\"description\":\"The user's login.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The currently authenticated user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RateLimit\",\"description\":\"Represents the client's rate limit.\",\"fields\":[{\"name\":\"cost\",\"description\":\"The point cost for the current query counting against the rate limit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"limit\",\"description\":\"The maximum number of points the client is permitted to consume in a 60 minute window.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodeCount\",\"description\":\"The maximum number of nodes this query may return\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"remaining\",\"description\":\"The number of points remaining in the current rate limit window.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resetAt\",\"description\":\"The time at which the current rate limit window resets in UTC epoch seconds.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"used\",\"description\":\"The number of points used in the current rate limit window.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"description\":\"Represents a subject that can be reacted on.\",\"fields\":[{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Reactable object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ReactingUserConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactingUserEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReactingUserEdge\",\"description\":\"Represents a user that's made a reaction.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactedAt\",\"description\":\"The moment when the user made the reaction.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"description\":\"An emoji reaction to a particular piece of content.\",\"fields\":[{\"name\":\"content\",\"description\":\"Identifies the emoji reaction.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Reaction object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactable\",\"description\":\"The reactable piece of content\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"Identifies the user who created this reaction.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"description\":\"A list of reactions that have been left on the subject.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasReacted\",\"description\":\"Whether or not the authenticated user has left a reaction on the subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"description\":\"Emojis that can be attached to Issues, Pull Requests and Comments.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"THUMBS_UP\",\"description\":\"Represents the `:+1:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THUMBS_DOWN\",\"description\":\"Represents the `:-1:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LAUGH\",\"description\":\"Represents the `:laugh:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HOORAY\",\"description\":\"Represents the `:hooray:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONFUSED\",\"description\":\"Represents the `:confused:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HEART\",\"description\":\"Represents the `:heart:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ROCKET\",\"description\":\"Represents the `:rocket:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EYES\",\"description\":\"Represents the `:eyes:` emoji.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReactionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"description\":\"A group of emoji reactions to a particular piece of content.\",\"fields\":[{\"name\":\"content\",\"description\":\"Identifies the emoji reaction.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies when the reaction was created.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactors\",\"description\":\"Reactors to the reaction subject with the emotion represented by this reaction group.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The subject that was reacted to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"users\",\"description\":\"Users who have reacted to the reaction subject with the emotion represented by this reaction group\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactingUserConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Reactors can now be mannequins, bots, and organizations. Use the `reactors` field instead. Removal on 2021-10-01 UTC.\"},{\"name\":\"viewerHasReacted\",\"description\":\"Whether or not the authenticated user has left a reaction on the subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"description\":\"Ways in which lists of reactions can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order reactions by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReactionOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order reactions by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ReactionOrderField\",\"description\":\"A list of fields that reactions can be ordered by.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Allows ordering a list of reactions by when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"Reactor\",\"description\":\"Types that can be assigned to reactions.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ReactorConnection\",\"description\":\"The connection type for Reactor.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"Reactor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReactorEdge\",\"description\":\"Represents an author of a reaction.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The author of the reaction.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"Reactor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactedAt\",\"description\":\"The moment when the user made the reaction.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReadyForReviewEvent\",\"description\":\"Represents a 'ready_for_review' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReadyForReviewEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this ready for review event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this ready for review event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"description\":\"Represents a Git reference.\",\"fields\":[{\"name\":\"associatedPullRequests\",\"description\":\"A list of pull requests with this ref as the head ref.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRule\",\"description\":\"Branch protection rules for this ref\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"compare\",\"description\":\"Compares the current ref as a base ref to another head ref, if the comparison can be made.\",\"args\":[{\"name\":\"headRef\",\"description\":\"The head ref to compare against.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Comparison\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Ref object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The ref name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"prefix\",\"description\":\"The ref's prefix, such as `refs/heads/` or `refs/tags/`.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"refUpdateRule\",\"description\":\"Branch protection rules that are viewable by non-admins\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RefUpdateRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the ref belongs to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rules\",\"description\":\"A list of rules from active Repository and Organization rulesets that apply to this ref.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repository rules.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"target\",\"description\":\"The object the ref points to. Returns null when object does not exist.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RefConnection\",\"description\":\"The connection type for Ref.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RefEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RefEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RefNameConditionTarget\",\"description\":\"Parameters to be used for the ref_name condition\",\"fields\":[{\"name\":\"exclude\",\"description\":\"Array of ref names or patterns to exclude. The condition will not pass if any of these patterns match.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"include\",\"description\":\"Array of ref names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~DEFAULT_BRANCH` to include the default branch or `~ALL` to include all branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefNameConditionTargetInput\",\"description\":\"Parameters to be used for the ref_name condition\",\"fields\":null,\"inputFields\":[{\"name\":\"exclude\",\"description\":\"Array of ref names or patterns to exclude. The condition will not pass if any of these patterns match.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"include\",\"description\":\"Array of ref names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~DEFAULT_BRANCH` to include the default branch or `~ALL` to include all branches.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefOrder\",\"description\":\"Ways in which lists of git refs can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order refs by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RefOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order refs by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RefOrderField\",\"description\":\"Properties by which ref connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TAG_COMMIT_DATE\",\"description\":\"Order refs by underlying commit date if the ref prefix is refs/tags/\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALPHABETICAL\",\"description\":\"Order refs by their alphanumeric name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefUpdate\",\"description\":\"A ref update\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"The fully qualified name of the ref to be update. For example `refs/heads/branch-name`\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitRefname\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"afterOid\",\"description\":\"The value this ref should be updated to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"beforeOid\",\"description\":\"The value this ref needs to point to before the update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"force\",\"description\":\"Force a non fast-forward update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RefUpdateRule\",\"description\":\"Branch protection rules that are enforced on the viewer.\",\"fields\":[{\"name\":\"allowsDeletions\",\"description\":\"Can this branch be deleted.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"allowsForcePushes\",\"description\":\"Are force pushes allowed on this branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blocksCreations\",\"description\":\"Can matching branches be created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"Identifies the protection rule pattern.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"Number of approving reviews required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredStatusCheckContexts\",\"description\":\"List of required status check contexts that must pass for commits to be accepted to matching branches.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresCodeOwnerReviews\",\"description\":\"Are reviews from code owners required to update matching branches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresConversationResolution\",\"description\":\"Are conversations required to be resolved before merging.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresLinearHistory\",\"description\":\"Are merge commits prohibited from being pushed to this branch.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiresSignatures\",\"description\":\"Are commits required to be signed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerAllowedToDismissReviews\",\"description\":\"Is the viewer allowed to dismiss reviews.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanPush\",\"description\":\"Can the viewer push to the branch\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReferencedEvent\",\"description\":\"Represents a 'referenced' event on a given `ReferencedSubject`.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"Identifies the commit associated with the 'referenced' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitRepository\",\"description\":\"Identifies the repository associated with the 'referenced' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReferencedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Reference originated in a different repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDirectReference\",\"description\":\"Checks if the commit message itself references the subject. Can be false in the case of a commit comment reference.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Object referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ReferencedSubject\",\"description\":\"Any referencable object\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RegenerateEnterpriseIdentityProviderRecoveryCodesInput\",\"description\":\"Autogenerated input type of RegenerateEnterpriseIdentityProviderRecoveryCodes\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set an identity provider.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RegenerateEnterpriseIdentityProviderRecoveryCodesPayload\",\"description\":\"Autogenerated return type of RegenerateEnterpriseIdentityProviderRecoveryCodes.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"identityProvider\",\"description\":\"The identity provider for the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RegenerateVerifiableDomainTokenInput\",\"description\":\"Autogenerated input type of RegenerateVerifiableDomainToken\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the verifiable domain to regenerate the verification token of.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RegenerateVerifiableDomainTokenPayload\",\"description\":\"Autogenerated return type of RegenerateVerifiableDomainToken.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verificationToken\",\"description\":\"The verification token that was generated.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RejectDeploymentsInput\",\"description\":\"Autogenerated input type of RejectDeployments\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"workflowRunId\",\"description\":\"The node ID of the workflow run containing the pending deployments.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"environmentIds\",\"description\":\"The ids of environments to reject deployments\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"comment\",\"description\":\"Optional comment for rejecting deployments\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RejectDeploymentsPayload\",\"description\":\"Autogenerated return type of RejectDeployments.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployments\",\"description\":\"The affected deployments.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Deployment\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Release\",\"description\":\"A release contains the content for a release.\",\"fields\":[{\"name\":\"author\",\"description\":\"The author of the release\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the release.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The description of this release rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Release object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"immutable\",\"description\":\"Whether or not the release is immutable\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDraft\",\"description\":\"Whether or not the release is a draft\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLatest\",\"description\":\"Whether or not the release is the latest releast\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrerelease\",\"description\":\"Whether or not the release is a prerelease\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mentions\",\"description\":\"A list of users mentioned in the release description\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The title of the release.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"Identifies the date and time when the release was created.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"releaseAssets\",\"description\":\"List of releases assets which are dependent on this release.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"A name to filter the assets by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseAssetConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that the release belongs to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this issue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescriptionHTML\",\"description\":\"A description of the release, rendered to HTML without any links in it.\",\"args\":[{\"name\":\"limit\",\"description\":\"How many characters to return.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"200\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tag\",\"description\":\"The Git tag the release points to\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tagCommit\",\"description\":\"The tag commit for this release.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tagName\",\"description\":\"The name of the release's Git tag\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this issue\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseAsset\",\"description\":\"A release asset contains the content for a release asset.\",\"fields\":[{\"name\":\"contentType\",\"description\":\"The asset's content-type\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"digest\",\"description\":\"The SHA256 digest of the asset\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"downloadCount\",\"description\":\"The number of times this asset was downloaded\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"downloadUrl\",\"description\":\"Identifies the URL where you can download the release asset via the browser.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReleaseAsset object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Identifies the title of the release asset.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"release\",\"description\":\"Release that the asset is associated with\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"size\",\"description\":\"The size (in bytes) of the asset\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"uploadedBy\",\"description\":\"The user that performed the upload\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"Identifies the URL of the release asset.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseAssetConnection\",\"description\":\"The connection type for ReleaseAsset.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseAssetEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseAsset\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseAssetEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseAsset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseConnection\",\"description\":\"The connection type for Release.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReleaseEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReleaseOrder\",\"description\":\"Ways in which lists of releases can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order releases by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReleaseOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order releases by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ReleaseOrderField\",\"description\":\"Properties by which release connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order releases by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order releases alphabetically by name\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveAssigneesFromAssignableInput\",\"description\":\"Autogenerated input type of RemoveAssigneesFromAssignable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assignableId\",\"description\":\"The id of the assignable object to remove assignees from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"The ids of actors to remove as assignees.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveAssigneesFromAssignablePayload\",\"description\":\"Autogenerated return type of RemoveAssigneesFromAssignable.\",\"fields\":[{\"name\":\"assignable\",\"description\":\"The item that was unassigned.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveBlockedByInput\",\"description\":\"Autogenerated input type of RemoveBlockedBy\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the blocked issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"blockingIssueId\",\"description\":\"The ID of the blocking issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveBlockedByPayload\",\"description\":\"Autogenerated return type of RemoveBlockedBy.\",\"fields\":[{\"name\":\"blockingIssue\",\"description\":\"The previously blocking issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The previously blocked issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseAdminInput\",\"description\":\"Autogenerated input type of RemoveEnterpriseAdmin\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The Enterprise ID from which to remove the administrator.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of the user to remove as an administrator.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseAdminPayload\",\"description\":\"Autogenerated return type of RemoveEnterpriseAdmin.\",\"fields\":[{\"name\":\"admin\",\"description\":\"The user who was removed as an administrator.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The updated enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of removing an administrator.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The viewer performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseIdentityProviderInput\",\"description\":\"Autogenerated input type of RemoveEnterpriseIdentityProvider\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise from which to remove the identity provider.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseIdentityProviderPayload\",\"description\":\"Autogenerated return type of RemoveEnterpriseIdentityProvider.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"identityProvider\",\"description\":\"The identity provider that was removed from the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseMemberInput\",\"description\":\"Autogenerated input type of RemoveEnterpriseMember\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise from which the user should be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"userId\",\"description\":\"The ID of the user to remove from the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseMemberPayload\",\"description\":\"Autogenerated return type of RemoveEnterpriseMember.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The updated enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that was removed from the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The viewer performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseOrganizationInput\",\"description\":\"Autogenerated input type of RemoveEnterpriseOrganization\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise from which the organization should be removed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization to remove from the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseOrganizationPayload\",\"description\":\"Autogenerated return type of RemoveEnterpriseOrganization.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The updated enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that was removed from the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"The viewer performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveEnterpriseSupportEntitlementInput\",\"description\":\"Autogenerated input type of RemoveEnterpriseSupportEntitlement\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the Enterprise which the admin belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of a member who will lose the support entitlement.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveEnterpriseSupportEntitlementPayload\",\"description\":\"Autogenerated return type of RemoveEnterpriseSupportEntitlement.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of removing the support entitlement.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveLabelsFromLabelableInput\",\"description\":\"Autogenerated input type of RemoveLabelsFromLabelable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelableId\",\"description\":\"The id of the Labelable to remove labels from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"labelIds\",\"description\":\"The ids of labels to remove.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveLabelsFromLabelablePayload\",\"description\":\"Autogenerated return type of RemoveLabelsFromLabelable.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labelable\",\"description\":\"The Labelable the labels were removed from.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveOutsideCollaboratorInput\",\"description\":\"Autogenerated input type of RemoveOutsideCollaborator\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userId\",\"description\":\"The ID of the outside collaborator to remove.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization to remove the outside collaborator from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveOutsideCollaboratorPayload\",\"description\":\"Autogenerated return type of RemoveOutsideCollaborator.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"removedUser\",\"description\":\"The user that was removed as an outside collaborator.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveReactionInput\",\"description\":\"Autogenerated input type of RemoveReaction\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the subject to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"The name of the emoji reaction to remove.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveReactionPayload\",\"description\":\"Autogenerated return type of RemoveReaction.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reaction\",\"description\":\"The reaction object.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Reaction\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"The reaction groups for the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The reactable subject.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveStarInput\",\"description\":\"Autogenerated input type of RemoveStar\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"starrableId\",\"description\":\"The Starrable ID to unstar.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveStarPayload\",\"description\":\"Autogenerated return type of RemoveStar.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"starrable\",\"description\":\"The starrable.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveSubIssueInput\",\"description\":\"Autogenerated input type of RemoveSubIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The id of the issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"subIssueId\",\"description\":\"The id of the sub-issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveSubIssuePayload\",\"description\":\"Autogenerated return type of RemoveSubIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The parent of the sub-issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssue\",\"description\":\"The sub-issue of the parent.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RemoveUpvoteInput\",\"description\":\"Autogenerated input type of RemoveUpvote\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the discussion or comment to remove upvote.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemoveUpvotePayload\",\"description\":\"Autogenerated return type of RemoveUpvote.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The votable subject.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Votable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromMergeQueueEvent\",\"description\":\"Represents a 'removed_from_merge_queue' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"beforeCommit\",\"description\":\"Identifies the before commit SHA for the 'removed_from_merge_queue' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enqueuer\",\"description\":\"The user who removed this Pull Request from the merge queue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RemovedFromMergeQueueEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueue\",\"description\":\"The merge queue where this pull request was removed from.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reason\",\"description\":\"The reason this pull request was removed from the queue.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectEvent\",\"description\":\"Represents a 'removed_from_project' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RemovedFromProjectEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectColumnName\",\"description\":\"Column name referenced by this project event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RemovedFromProjectV2Event\",\"description\":\"Represents a 'removed_from_project_v2' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RemovedFromProjectV2Event object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Project referenced by event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasAutomated\",\"description\":\"Did this event result from workflow automation?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Event\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RenamedTitleEvent\",\"description\":\"Represents a 'renamed' event on a given issue or pull request\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"currentTitle\",\"description\":\"Identifies the current title of the issue or pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RenamedTitleEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousTitle\",\"description\":\"Identifies the previous title of the issue or pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"Subject that was renamed.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"RenamedTitleSubject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"RenamedTitleSubject\",\"description\":\"An object which has a renamable title\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenDiscussionInput\",\"description\":\"Autogenerated input type of ReopenDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"discussionId\",\"description\":\"ID of the discussion to be reopened.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenDiscussionPayload\",\"description\":\"Autogenerated return type of ReopenDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that was reopened.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenIssueInput\",\"description\":\"Autogenerated input type of ReopenIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"ID of the issue to be opened.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenIssuePayload\",\"description\":\"Autogenerated return type of ReopenIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was opened.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReopenPullRequestInput\",\"description\":\"Autogenerated input type of ReopenPullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"ID of the pull request to be reopened.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenPullRequestPayload\",\"description\":\"Autogenerated return type of ReopenPullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that was reopened.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReopenedEvent\",\"description\":\"Represents a 'reopened' event on any `Closable`.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closable\",\"description\":\"Object that was reopened.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Closable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReopenedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stateReason\",\"description\":\"The reason the issue state was changed to open.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueStateReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReorderEnvironmentInput\",\"description\":\"Autogenerated input type of ReorderEnvironment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"environmentId\",\"description\":\"The ID of the environment to modify\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"position\",\"description\":\"The desired position of the environment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReorderEnvironmentPayload\",\"description\":\"Autogenerated return type of ReorderEnvironment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The environment that was reordered\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReplaceActorsForAssignableInput\",\"description\":\"Autogenerated input type of ReplaceActorsForAssignable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assignableId\",\"description\":\"The id of the assignable object to replace the assignees for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"actorIds\",\"description\":\"The ids of the actors to replace the existing assignees.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReplaceActorsForAssignablePayload\",\"description\":\"Autogenerated return type of ReplaceActorsForAssignable.\",\"fields\":[{\"name\":\"assignable\",\"description\":\"The item that was assigned.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"description\":\"Audit log entry for a repo.access event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoAccessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoAccessAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoAccessAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"description\":\"Audit log entry for a repo.add_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoAddMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoAddMemberAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoAddMemberAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"description\":\"Audit log entry for a repo.add_topic event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoAddTopicAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topicName\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TopicAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"description\":\"Audit log entry for a repo.archived event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoArchivedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoArchivedAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoArchivedAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"description\":\"Audit log entry for a repo.change_merge_setting event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoChangeMergeSettingAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isEnabled\",\"description\":\"Whether the change was to enable (true) or disable (false) the merge type\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"mergeType\",\"description\":\"The merge method affected by the change\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoChangeMergeSettingAuditEntryMergeType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoChangeMergeSettingAuditEntryMergeType\",\"description\":\"The merge options available for pull requests to this repository.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MERGE\",\"description\":\"The pull request is added to the base branch in a merge commit.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REBASE\",\"description\":\"Commits from the pull request are added onto the base branch individually without a merge commit.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SQUASH\",\"description\":\"The pull request's commits are squashed into a single commit before they are merged to the base branch.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"description\":\"Audit log entry for a repo.config.disable_anonymous_git_access event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigDisableAnonymousGitAccessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"description\":\"Audit log entry for a repo.config.disable_collaborators_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigDisableCollaboratorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"description\":\"Audit log entry for a repo.config.disable_contributors_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigDisableContributorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"description\":\"Audit log entry for a repo.config.disable_sockpuppet_disallowed event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigDisableSockpuppetDisallowedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"description\":\"Audit log entry for a repo.config.enable_anonymous_git_access event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigEnableAnonymousGitAccessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"description\":\"Audit log entry for a repo.config.enable_collaborators_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigEnableCollaboratorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"description\":\"Audit log entry for a repo.config.enable_contributors_only event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigEnableContributorsOnlyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"description\":\"Audit log entry for a repo.config.enable_sockpuppet_disallowed event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigEnableSockpuppetDisallowedAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"description\":\"Audit log entry for a repo.config.lock_anonymous_git_access event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigLockAnonymousGitAccessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"description\":\"Audit log entry for a repo.config.unlock_anonymous_git_access event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoConfigUnlockAnonymousGitAccessAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"description\":\"Audit log entry for a repo.create event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"forkParentName\",\"description\":\"The name of the parent repository for this forked repository.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"forkSourceName\",\"description\":\"The name of the root repository for this network.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoCreateAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoCreateAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoCreateAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"description\":\"Audit log entry for a repo.destroy event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoDestroyAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoDestroyAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoDestroyAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"description\":\"Audit log entry for a repo.remove_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoRemoveMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"visibility\",\"description\":\"The visibility of the repository\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepoRemoveMemberAuditEntryVisibility\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepoRemoveMemberAuditEntryVisibility\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"description\":\"Audit log entry for a repo.remove_topic event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the RepoRemoveTopicAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topicName\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TopicAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ReportedContentClassifiers\",\"description\":\"The reasons a piece of content can be reported or minimized.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SPAM\",\"description\":\"A spammy piece of content\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ABUSE\",\"description\":\"An abusive or harassing piece of content\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OFF_TOPIC\",\"description\":\"An irrelevant piece of content\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OUTDATED\",\"description\":\"An outdated piece of content\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DUPLICATE\",\"description\":\"A duplicated piece of content\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RESOLVED\",\"description\":\"The content has been resolved\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"description\":\"A repository contains the content for a project.\",\"fields\":[{\"name\":\"allowUpdateBranch\",\"description\":\"Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"archivedAt\",\"description\":\"Identifies the date and time when the repository was archived.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignableUsers\",\"description\":\"A list of users that can be assigned to issues in this repository.\",\"args\":[{\"name\":\"query\",\"description\":\"Filters users with query on user name and login.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"autoMergeAllowed\",\"description\":\"Whether or not Auto-merge can be enabled on pull requests in this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRules\",\"description\":\"A list of branch protection rules for this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRuleConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"codeOfConduct\",\"description\":\"Returns the code of conduct for this repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CodeOfConduct\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"codeowners\",\"description\":\"Information extracted from the repository's `CODEOWNERS` file.\",\"args\":[{\"name\":\"refName\",\"description\":\"The ref name used to return the associated `CODEOWNERS` file.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryCodeowners\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"collaborators\",\"description\":\"A list of collaborators associated with the repository.\",\"args\":[{\"name\":\"affiliation\",\"description\":\"Collaborators affiliation level with a repository.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"CollaboratorAffiliation\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of one specific collaborator.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"Filters users with query on user name and login\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryCollaboratorConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitComments\",\"description\":\"A list of commit comments associated with the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contactLinks\",\"description\":\"Returns a list of contact links associated to the repository\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryContactLink\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributingGuidelines\",\"description\":\"Returns the contributing guidelines for this repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ContributingGuidelines\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"defaultBranchRef\",\"description\":\"The Ref associated with the repository's default branch.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deleteBranchOnMerge\",\"description\":\"Whether or not branches are automatically deleted when merged in this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependencyGraphManifests\",\"description\":\"A list of dependency manifests contained in the repository\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"withDependencies\",\"description\":\"Flag to scope to only manifests with dependencies\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"dependenciesFirst\",\"description\":\"Number of dependencies to fetch\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"dependenciesAfter\",\"description\":\"Cursor to paginate dependencies\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependencyGraphManifestConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployKeys\",\"description\":\"A list of deploy keys that are on this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeployKeyConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployments\",\"description\":\"Deployments associated with the repository\",\"args\":[{\"name\":\"environments\",\"description\":\"Environments to list deployments for\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for deployments returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DeploymentOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the repository.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The description of the repository rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"Returns a single discussion from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the discussion to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussionCategories\",\"description\":\"A list of discussion categories that are available in the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"filterByAssignable\",\"description\":\"Filter by categories that are assignable by the viewer.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussionCategory\",\"description\":\"A discussion category by slug.\",\"args\":[{\"name\":\"slug\",\"description\":\"The slug of the discussion category to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussions\",\"description\":\"A list of discussions that have been opened in the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"categoryId\",\"description\":\"Only include discussions that belong to the category with this ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"states\",\"description\":\"A list of states to filter the discussions by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionState\",\"ofType\":null}}},\"defaultValue\":\"[]\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for discussions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"},{\"name\":\"answered\",\"description\":\"Only show answered or unanswered discussions\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"diskUsage\",\"description\":\"The number of kilobytes this repository occupies on disk.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"Returns a single active environment from the current repository by name.\",\"args\":[{\"name\":\"name\",\"description\":\"The name of the environment to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environments\",\"description\":\"A list of environments that are in this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the environments\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"Environments\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"},{\"name\":\"pinnedEnvironmentFilter\",\"description\":\"Filter to control pinned environments return\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnvironmentPinnedFilterField\",\"ofType\":null},\"defaultValue\":\"ALL\"},{\"name\":\"names\",\"description\":\"The names of the environments to be returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"EnvironmentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"forkCount\",\"description\":\"Returns how many forks there are of this repository in the whole network.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"forkingAllowed\",\"description\":\"Whether this repository allows forks.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"forks\",\"description\":\"A list of direct forked repositories.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fundingLinks\",\"description\":\"The funding links for this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"FundingLink\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasDiscussionsEnabled\",\"description\":\"Indicates if the repository has the Discussions feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"Indicates if the repository has issues feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasProjectsEnabled\",\"description\":\"Indicates if the repository has the Projects feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasSponsorshipsEnabled\",\"description\":\"Indicates if the repository displays a Sponsor button for financial contributions.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasVulnerabilityAlertsEnabled\",\"description\":\"Whether vulnerability alerts are enabled for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasWikiEnabled\",\"description\":\"Indicates if the repository has wiki feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"homepageUrl\",\"description\":\"The repository's URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Repository object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"interactionAbility\",\"description\":\"The interaction ability settings for this repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInteractionAbility\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isArchived\",\"description\":\"Indicates if the repository is unmaintained.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isBlankIssuesEnabled\",\"description\":\"Returns true if blank issue creation is allowed\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDisabled\",\"description\":\"Returns whether or not this repository disabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isEmpty\",\"description\":\"Returns whether or not this repository is empty.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isFork\",\"description\":\"Identifies if the repository is a fork.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isInOrganization\",\"description\":\"Indicates if a repository is either owned by an organization, or is a private fork of an organization repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLocked\",\"description\":\"Indicates if the repository has been locked or not.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMirror\",\"description\":\"Identifies if the repository is a mirror.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrivate\",\"description\":\"Identifies if the repository is private or internal.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSecurityPolicyEnabled\",\"description\":\"Returns true if this repository has a security policy\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isTemplate\",\"description\":\"Identifies if the repository is a template that can be used to generate new repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isUserConfigurationRepository\",\"description\":\"Is this repository a user configuration repository?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"Returns a single issue from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the issue to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueOrPullRequest\",\"description\":\"Returns a single issue-like object from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the issue to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueTemplates\",\"description\":\"Returns a list of issue templates associated to the repository\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueTemplate\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"Returns a single issue type by name\",\"args\":[{\"name\":\"name\",\"description\":\"Issue type name.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueTypes\",\"description\":\"A list of the repository's issue types\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for issue types returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueTypeOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueTypeConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issues\",\"description\":\"A list of issues that have been opened in the repository.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the issues by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"Returns a single label by name\",\"args\":[{\"name\":\"name\",\"description\":\"Label name\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labels\",\"description\":\"A list of labels associated with the repository.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for labels returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LabelOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: ASC}\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"If provided, searches labels by name and description.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LabelConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"languages\",\"description\":\"A list containing a breakdown of the language composition of the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"LanguageOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"LanguageConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"latestRelease\",\"description\":\"Get the latest release for the repository if one exists.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"licenseInfo\",\"description\":\"The license associated with the repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"License\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockReason\",\"description\":\"The reason the repository has been locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryLockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mentionableUsers\",\"description\":\"A list of Users that can be mentioned in the context of the repository.\",\"args\":[{\"name\":\"query\",\"description\":\"Filters users with query on user name and login\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeCommitAllowed\",\"description\":\"Whether or not PRs are merged with a merge commit on this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeCommitMessage\",\"description\":\"How the default commit message will be generated when merging a pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeCommitMessage\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeCommitTitle\",\"description\":\"How the default commit title will be generated when merging a pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MergeCommitTitle\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mergeQueue\",\"description\":\"The merge queue for a specified branch, otherwise the default branch if not provided.\",\"args\":[{\"name\":\"branch\",\"description\":\"The name of the branch to get the merge queue for. Case sensitive.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MergeQueue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestone\",\"description\":\"Returns a single milestone from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the milestone to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"milestones\",\"description\":\"A list of milestones associated with the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"Filter by the state of the milestones.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MilestoneState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for milestones.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MilestoneOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"Filters milestones with a query on the title\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"MilestoneConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mirrorUrl\",\"description\":\"The repository's original mirror URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameWithOwner\",\"description\":\"The repository's name with owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"object\",\"description\":\"A Git object in the repository\",\"args\":[{\"name\":\"oid\",\"description\":\"The Git object ID\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"expression\",\"description\":\"A Git revision expression suitable for rev-parse\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"openGraphImageUrl\",\"description\":\"The image used to represent this repository in Open Graph data.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The User owner of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packages\",\"description\":\"A list of packages under the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"names\",\"description\":\"Find packages by their names.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Find packages in a repository by ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"packageType\",\"description\":\"Filter registry package by type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering of the returned packages.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parent\",\"description\":\"The repository parent, if this is a fork.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedDiscussions\",\"description\":\"A list of discussions that have been pinned in this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedEnvironments\",\"description\":\"A list of pinned environments for this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the environments\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PinnedEnvironmentOrder\",\"ofType\":null},\"defaultValue\":\"{field: POSITION, direction: ASC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedEnvironmentConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedIssues\",\"description\":\"A list of pinned issues for this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PinnedIssueConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"planFeatures\",\"description\":\"Returns information about the availability of certain features and limits based on the repository's billing plan.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryPlanFeatures\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"primaryLanguage\",\"description\":\"The primary language of the repository's code.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Find project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectV2\",\"description\":\"Finds and returns the Project according to the provided Project number.\",\"args\":[{\"name\":\"number\",\"description\":\"The Project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projects\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for projects returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"search\",\"description\":\"Query to search projects by, currently only searching by name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the projects by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectsResourcePath\",\"description\":\"The HTTP path listing the repository's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsUrl\",\"description\":\"The HTTP URL listing the repository's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"List of projects linked to this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"A project to search for linked to the repo.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Returns a single pull request from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the pull request to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestTemplates\",\"description\":\"Returns a list of pull request templates associated to the repository\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestTemplate\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequests\",\"description\":\"A list of pull requests that have been opened in the repository.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pushedAt\",\"description\":\"Identifies the date and time when the repository was last pushed to.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rebaseMergeAllowed\",\"description\":\"Whether or not rebase-merging is enabled on this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"recentProjects\",\"description\":\"Recent projects that this user has modified in the context of the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"Fetch a given ref from the repository\",\"args\":[{\"name\":\"qualifiedName\",\"description\":\"The ref to retrieve. Fully qualified matches are checked in order (`refs/heads/master`) before falling back onto checks for short name matches (`master`).\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"refs\",\"description\":\"Fetch a list of refs from the repository\",\"args\":[{\"name\":\"query\",\"description\":\"Filters refs with query on name\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"refPrefix\",\"description\":\"A ref name prefix like `refs/heads/`, `refs/tags/`, etc.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"DEPRECATED: use orderBy. The ordering direction.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for refs returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RefConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"release\",\"description\":\"Lookup a single release given various criteria.\",\"args\":[{\"name\":\"tagName\",\"description\":\"The name of the Tag the Release was created from\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"releases\",\"description\":\"List of releases which are dependent on this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReleaseOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReleaseConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryTopics\",\"description\":\"A list of applied repository-topic associations for this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopicConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ruleset\",\"description\":\"Returns a single ruleset from the current repository by ID.\",\"args\":[{\"name\":\"includeParents\",\"description\":\"Include rulesets configured at higher levels that apply to this repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"databaseId\",\"description\":\"The ID of the ruleset to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rulesets\",\"description\":\"A list of rulesets for this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includeParents\",\"description\":\"Return rulesets configured at higher levels that apply to this repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"targets\",\"description\":\"Return rulesets that apply to the specified target\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"ofType\":null}}},\"defaultValue\":\"null\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityPolicyUrl\",\"description\":\"The security policy URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescriptionHTML\",\"description\":\"A description of the repository, rendered to HTML without any links in it.\",\"args\":[{\"name\":\"limit\",\"description\":\"How many characters to return.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"200\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"squashMergeAllowed\",\"description\":\"Whether or not squash-merging is enabled on this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"squashMergeCommitMessage\",\"description\":\"How the default commit message will be generated when squash merging a pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SquashMergeCommitMessage\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"squashMergeCommitTitle\",\"description\":\"How the default commit title will be generated when squash merging a pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SquashMergeCommitTitle\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"squashPrTitleUsedAsDefault\",\"description\":\"Whether a squash merge commit can use the pull request title as default.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`squashPrTitleUsedAsDefault` will be removed. Use `Repository.squashMergeCommitTitle` instead. Removal on 2023-04-01 UTC.\"},{\"name\":\"sshUrl\",\"description\":\"The SSH URL to clone this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitSSHRemote\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazerCount\",\"description\":\"Returns a count of how many stargazers there are on this object\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazers\",\"description\":\"A list of users who have starred this starrable.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StargazerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"submodules\",\"description\":\"Returns a list of all submodules in this repository parsed from the .gitmodules file as of the default branch's HEAD commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SubmoduleConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedActors\",\"description\":\"A list of suggested actors that can be attributed to content in this repository.\",\"args\":[{\"name\":\"query\",\"description\":\"Search actors with query on user name and login.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"loginNames\",\"description\":\"A comma separated list of login names to filter actors by. Only the first 10 logins will be used.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"capabilities\",\"description\":\"A list of capabilities to filter actors by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositorySuggestedActorFilter\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ActorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tempCloneToken\",\"description\":\"Temporary authentication token for cloning this repository.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"templateRepository\",\"description\":\"The repository from which this repository was generated, if any.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"usesCustomOpenGraphImage\",\"description\":\"Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanAdminister\",\"description\":\"Indicates whether the viewer has admin permissions on this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanCreateProjects\",\"description\":\"Can the current viewer create new projects on this owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"viewerCanSeeIssueFields\",\"description\":\"Indicates whether the current user can see issue fields in this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdateTopics\",\"description\":\"Indicates whether the viewer can update the topics of this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDefaultCommitEmail\",\"description\":\"The last commit email for the viewer.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDefaultMergeMethod\",\"description\":\"The last used merge method by the viewer or the default for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestMergeMethod\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasStarred\",\"description\":\"Returns a boolean indicating whether the viewing user has starred this starrable.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerPermission\",\"description\":\"The users permission level on the repository. Will return null if authenticated as an GitHub App.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerPossibleCommitEmails\",\"description\":\"A list of emails this viewer can commit with.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"visibility\",\"description\":\"Indicates the repository's visibility level.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerabilityAlert\",\"description\":\"Returns a single vulnerability alert from the current repository by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The number for the vulnerability alert to be returned.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerabilityAlerts\",\"description\":\"A list of vulnerability alerts that are on this repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"Filter by the state of the alert\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"dependencyScopes\",\"description\":\"Filter by the scope of the alert's dependency\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertDependencyScope\",\"ofType\":null}}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlertConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"watchers\",\"description\":\"A list of users watching the repository.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"webCommitSignoffRequired\",\"description\":\"Whether contributors are required to sign off on web-based commits in this repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"PackageOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Recent\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryInfo\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"description\":\"The affiliation of a user to a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OWNER\",\"description\":\"Repositories that are owned by the authenticated user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COLLABORATOR\",\"description\":\"Repositories that the user has been added to as a collaborator.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORGANIZATION_MEMBER\",\"description\":\"Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"description\":\"Metadata for an audit entry with action repo.*\",\"fields\":[{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipRepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingDisableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PrivateRepositoryForkingEnableAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoArchivedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoChangeMergeSettingAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigDisableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableCollaboratorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableContributorsOnlyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigEnableSockpuppetDisallowedAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigLockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoConfigUnlockAnonymousGitAccessAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoCreateAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoDestroyAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"RepositoryCodeowners\",\"description\":\"Information extracted from a repository's `CODEOWNERS` file.\",\"fields\":[{\"name\":\"errors\",\"description\":\"Any problems that were encountered while parsing the `CODEOWNERS` file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryCodeownersError\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryCodeownersError\",\"description\":\"An error in a `CODEOWNERS` file.\",\"fields\":[{\"name\":\"column\",\"description\":\"The column number where the error occurs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"kind\",\"description\":\"A short string describing the type of error.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"line\",\"description\":\"The line number where the error occurs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A complete description of the error, combining information from other fields.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path to the file when the error occurs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"The content of the line where the error occurs.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestion\",\"description\":\"A suggestion of how to fix the error.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryCollaboratorConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryCollaboratorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryCollaboratorEdge\",\"description\":\"Represents a user who is a collaborator of a repository.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permission\",\"description\":\"The permission the user has on the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permissionSources\",\"description\":\"A list of sources for the user's access to the repository.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PermissionSource\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"description\":\"A list of repositories owned by the subject.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalDiskUsage\",\"description\":\"The total size in kilobytes of all repositories in the connection. Value will never be larger than max 32-bit signed integer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryContactLink\",\"description\":\"A repository contact link.\",\"fields\":[{\"name\":\"about\",\"description\":\"The contact link purpose.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The contact link name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The contact link URL.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryContributionType\",\"description\":\"The reason a repository is listed as 'contributed'.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"COMMIT\",\"description\":\"Created a commit\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE\",\"description\":\"Created an issue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST\",\"description\":\"Created a pull request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REPOSITORY\",\"description\":\"Created the repository\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST_REVIEW\",\"description\":\"Reviewed a pull request\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryDependabotAlertsThread\",\"description\":\"A wrapper on Repository used for Dependabot Alerts notifications.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryDependabotAlertsThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationsPermalink\",\"description\":\"The URL pointing to the repository's dependabot alerts page\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionAuthor\",\"description\":\"Represents an author of discussions in repositories.\",\"fields\":[{\"name\":\"repositoryDiscussions\",\"description\":\"Discussions this user has started.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for discussions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"repositoryId\",\"description\":\"Filter discussions to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"answered\",\"description\":\"Filter discussions to only those that have been answered or not. Defaults to including both answered and unanswered discussions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"states\",\"description\":\"A list of states to filter the discussions by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionState\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionCommentAuthor\",\"description\":\"Represents an author of discussion comments in repositories.\",\"fields\":[{\"name\":\"repositoryDiscussionComments\",\"description\":\"Discussion comments this user has authored.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Filter discussion comments to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"onlyAnswers\",\"description\":\"Filter discussion comments to only those that were marked as the answer\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"RepositoryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryIdConditionTarget\",\"description\":\"Parameters to be used for the repository_id condition\",\"fields\":[{\"name\":\"repositoryIds\",\"description\":\"One of these repo IDs must match the repo.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryIdConditionTargetInput\",\"description\":\"Parameters to be used for the repository_id condition\",\"fields\":null,\"inputFields\":[{\"name\":\"repositoryIds\",\"description\":\"One of these repo IDs must match the repo.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryInfo\",\"description\":\"A subset of repository info.\",\"fields\":[{\"name\":\"archivedAt\",\"description\":\"Identifies the date and time when the repository was archived.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the repository.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The description of the repository rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"forkCount\",\"description\":\"Returns how many forks there are of this repository in the whole network.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasDiscussionsEnabled\",\"description\":\"Indicates if the repository has the Discussions feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"Indicates if the repository has issues feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasProjectsEnabled\",\"description\":\"Indicates if the repository has the Projects feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasSponsorshipsEnabled\",\"description\":\"Indicates if the repository displays a Sponsor button for financial contributions.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasWikiEnabled\",\"description\":\"Indicates if the repository has wiki feature enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"homepageUrl\",\"description\":\"The repository's URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isArchived\",\"description\":\"Indicates if the repository is unmaintained.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isFork\",\"description\":\"Identifies if the repository is a fork.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isInOrganization\",\"description\":\"Indicates if a repository is either owned by an organization, or is a private fork of an organization repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLocked\",\"description\":\"Indicates if the repository has been locked or not.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isMirror\",\"description\":\"Identifies if the repository is a mirror.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrivate\",\"description\":\"Identifies if the repository is private or internal.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isTemplate\",\"description\":\"Identifies if the repository is a template that can be used to generate new repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"licenseInfo\",\"description\":\"The license associated with the repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"License\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockReason\",\"description\":\"The reason the repository has been locked.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryLockReason\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mirrorUrl\",\"description\":\"The repository's original mirror URL.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameWithOwner\",\"description\":\"The repository's name with owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"openGraphImageUrl\",\"description\":\"The image used to represent this repository in Open Graph data.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The User owner of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pushedAt\",\"description\":\"Identifies the date and time when the repository was last pushed to.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescriptionHTML\",\"description\":\"A description of the repository, rendered to HTML without any links in it.\",\"args\":[{\"name\":\"limit\",\"description\":\"How many characters to return.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"200\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"usesCustomOpenGraphImage\",\"description\":\"Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"visibility\",\"description\":\"Indicates the repository's visibility level.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInteractionAbility\",\"description\":\"Repository interaction limit that applies to this object.\",\"fields\":[{\"name\":\"expiresAt\",\"description\":\"The time the currently active limit expires.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"limit\",\"description\":\"The current limit that is enabled on this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"origin\",\"description\":\"The origin of the currently active interaction limit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitOrigin\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimit\",\"description\":\"A repository interaction limit.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"EXISTING_USERS\",\"description\":\"Users that have recently created their account will be unable to interact with the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CONTRIBUTORS_ONLY\",\"description\":\"Users that have not previously committed to a repository’s default branch will be unable to interact with the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COLLABORATORS_ONLY\",\"description\":\"Users that are not collaborators will not be able to interact with the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO_LIMIT\",\"description\":\"No interaction limits are enabled.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitExpiry\",\"description\":\"The length for a repository interaction limit to be enabled for.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ONE_DAY\",\"description\":\"The interaction limit will expire after 1 day.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THREE_DAYS\",\"description\":\"The interaction limit will expire after 3 days.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ONE_WEEK\",\"description\":\"The interaction limit will expire after 1 week.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ONE_MONTH\",\"description\":\"The interaction limit will expire after 1 month.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SIX_MONTHS\",\"description\":\"The interaction limit will expire after 6 months.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitOrigin\",\"description\":\"Indicates where an interaction limit is configured.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REPOSITORY\",\"description\":\"A limit that is configured at the repository level.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ORGANIZATION\",\"description\":\"A limit that is configured at the organization level.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER\",\"description\":\"A limit that is configured at the user-wide level.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitation\",\"description\":\"An invitation for a user to be added to a repository.\",\"fields\":[{\"name\":\"email\",\"description\":\"The email address that received the invitation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryInvitation object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitee\",\"description\":\"The user who received the invitation.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inviter\",\"description\":\"The user who created the invitation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permalink\",\"description\":\"The permalink for this repository invitation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permission\",\"description\":\"The permission granted on this repository by this invitation.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the user is invited to.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryInfo\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitationConnection\",\"description\":\"A list of repository invitations.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitation\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitationEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInvitation\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryInvitationOrder\",\"description\":\"Ordering options for repository invitation connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repository invitations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInvitationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryInvitationOrderField\",\"description\":\"Properties by which repository invitation connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order repository invitations by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryLockReason\",\"description\":\"The possible reasons a given repository could be in a locked state.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MOVING\",\"description\":\"The repository is locked due to a move.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BILLING\",\"description\":\"The repository is locked due to a billing related reason.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RENAME\",\"description\":\"The repository is locked due to a rename.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MIGRATING\",\"description\":\"The repository is locked due to a migration.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRADE_RESTRICTION\",\"description\":\"The repository is locked due to a trade controls related reason.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRANSFERRING_OWNERSHIP\",\"description\":\"The repository is locked due to an ownership transfer.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"description\":\"A GitHub Enterprise Importer (GEI) repository migration.\",\"fields\":[{\"name\":\"continueOnError\",\"description\":\"The migration flag to continue on error.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"failureReason\",\"description\":\"The reason the migration failed.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryMigration object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"migrationLogUrl\",\"description\":\"The URL for the migration log (expires 1 day after migration completes).\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"migrationSource\",\"description\":\"The migration source.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"MigrationSource\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The target repository name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sourceUrl\",\"description\":\"The migration source URL, for example `https://github.com` or `https://monalisa.ghe.com`.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The migration state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"MigrationState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"warningsCount\",\"description\":\"The number of warnings encountered for this migration. To review the warnings, check the [Migration Log](https://docs.github.com/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Migration\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigrationConnection\",\"description\":\"A list of migrations.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigrationEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigrationEdge\",\"description\":\"Represents a repository migration.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryMigrationOrder\",\"description\":\"Ordering options for repository migrations.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repository migrations by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryMigrationOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryMigrationOrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryMigrationOrderDirection\",\"description\":\"Possible directions in which to order a list of repository migrations when provided an `orderBy` argument.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ASC\",\"description\":\"Specifies an ascending order for a given `orderBy` argument.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DESC\",\"description\":\"Specifies a descending order for a given `orderBy` argument.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryMigrationOrderField\",\"description\":\"Properties by which repository migrations can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order mannequins why when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryNameConditionTarget\",\"description\":\"Parameters to be used for the repository_name condition\",\"fields\":[{\"name\":\"exclude\",\"description\":\"Array of repository names or patterns to exclude. The condition will not pass if any of these patterns match.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"include\",\"description\":\"Array of repository names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~ALL` to include all repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"protected\",\"description\":\"Target changes that match these patterns will be prevented except by those with bypass permissions.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryNameConditionTargetInput\",\"description\":\"Parameters to be used for the repository_name condition\",\"fields\":null,\"inputFields\":[{\"name\":\"exclude\",\"description\":\"Array of repository names or patterns to exclude. The condition will not pass if any of these patterns match.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"include\",\"description\":\"Array of repository names or patterns to include. One of these patterns must match for the condition to pass. Also accepts `~ALL` to include all repositories.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"protected\",\"description\":\"Target changes that match these patterns will be prevented except by those with bypass permissions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"description\":\"Represents a object that belongs to a repository.\",\"fields\":[{\"name\":\"repository\",\"description\":\"The repository associated with this node.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DependabotUpdate\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionCategory\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PinnedDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommitCommentThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryDependabotAlertsThread\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"description\":\"Ordering options for repository connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repositories by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryOrderField\",\"description\":\"Properties by which repository connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order repositories by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order repositories by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUSHED_AT\",\"description\":\"Order repositories by push time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order repositories by name\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STARGAZERS\",\"description\":\"Order repositories by number of stargazers\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"description\":\"Represents an owner of a Repository.\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the owner's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryOwner object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username used to login.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"A list of repositories that the user owns.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isArchived\",\"description\":\"If non-null, filters repositories according to whether they are archived and not maintained\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isFork\",\"description\":\"If non-null, filters repositories according to whether they are forks of another repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Find Repository.\",\"args\":[{\"name\":\"name\",\"description\":\"Name of Repository to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"followRenames\",\"description\":\"Follow repository renames. If disabled, a repository referenced by its old name will return an error.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP URL for the owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for the owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"description\":\"The access level to a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ADMIN\",\"description\":\"Can read, clone, and push to this repository. Can also manage issues, pull requests, and repository settings, including adding collaborators\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAINTAIN\",\"description\":\"Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WRITE\",\"description\":\"Can read, clone, and push to this repository. Can also manage issues and pull requests\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRIAGE\",\"description\":\"Can read and clone this repository. Can also manage issues and pull requests\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"READ\",\"description\":\"Can read and clone this repository. Can also open and comment on issues and pull requests\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryPlanFeatures\",\"description\":\"Information about the availability of features and limits for a repository based on its billing plan.\",\"fields\":[{\"name\":\"codeowners\",\"description\":\"Whether reviews can be automatically requested and enforced with a CODEOWNERS file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"draftPullRequests\",\"description\":\"Whether pull requests can be created as or converted to draft\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maximumAssignees\",\"description\":\"Maximum number of users that can be assigned to an issue or pull request\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maximumManualReviewRequests\",\"description\":\"Maximum number of manually-requested reviews on a pull request\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamReviewRequests\",\"description\":\"Whether teams can be requested to review pull requests\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"description\":\"The privacy of a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PUBLIC\",\"description\":\"Public\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"Private\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryPropertyConditionTarget\",\"description\":\"Parameters to be used for the repository_property condition\",\"fields\":[{\"name\":\"exclude\",\"description\":\"Array of repository properties that must not match.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PropertyTargetDefinition\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"include\",\"description\":\"Array of repository properties that must match\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PropertyTargetDefinition\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryPropertyConditionTargetInput\",\"description\":\"Parameters to be used for the repository_property condition\",\"fields\":null,\"inputFields\":[{\"name\":\"exclude\",\"description\":\"Array of repository properties that must not match.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PropertyTargetDefinitionInput\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"include\",\"description\":\"Array of repository properties that must match\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PropertyTargetDefinitionInput\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRule\",\"description\":\"A repository rule.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryRule object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parameters\",\"description\":\"The parameters for this rule.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"RuleParameters\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryRuleset\",\"description\":\"The repository ruleset associated with this rule configuration\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"The type of rule.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleConditions\",\"description\":\"Set of conditions that determine if a ruleset will evaluate\",\"fields\":[{\"name\":\"organizationProperty\",\"description\":\"Configuration for the organization_property condition\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationPropertyConditionTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"refName\",\"description\":\"Configuration for the ref_name condition\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RefNameConditionTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryId\",\"description\":\"Configuration for the repository_id condition\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryIdConditionTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"Configuration for the repository_name condition\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryNameConditionTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryProperty\",\"description\":\"Configuration for the repository_property condition\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryPropertyConditionTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleConditionsInput\",\"description\":\"Specifies the conditions required for a ruleset to evaluate\",\"fields\":null,\"inputFields\":[{\"name\":\"refName\",\"description\":\"Configuration for the ref_name condition\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefNameConditionTargetInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryName\",\"description\":\"Configuration for the repository_name condition\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryNameConditionTargetInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Configuration for the repository_id condition\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryIdConditionTargetInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryProperty\",\"description\":\"Configuration for the repository_property condition\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryPropertyConditionTargetInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationProperty\",\"description\":\"Configuration for the organization_property condition\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationPropertyConditionTargetInput\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleConnection\",\"description\":\"The connection type for RepositoryRule.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRule\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleInput\",\"description\":\"Specifies the attributes for a new or updated rule.\",\"fields\":null,\"inputFields\":[{\"name\":\"id\",\"description\":\"Optional ID of this rule when updating\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"type\",\"description\":\"The type of rule to create.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleType\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"parameters\",\"description\":\"The parameters for the rule.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RuleParametersInput\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleOrder\",\"description\":\"Ordering options for repository rules.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repository rules by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleOrderField\",\"description\":\"Properties by which repository rule connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UPDATED_AT\",\"description\":\"Order repository rules by updated time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order repository rules by created time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TYPE\",\"description\":\"Order repository rules by type\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleType\",\"description\":\"The rule types supported in rulesets\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATION\",\"description\":\"Only allow users with bypass permission to create matching refs.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATE\",\"description\":\"Only allow users with bypass permission to update matching refs.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DELETION\",\"description\":\"Only allow users with bypass permissions to delete matching refs.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_LINEAR_HISTORY\",\"description\":\"Prevent merge commits from being pushed to matching refs.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGE_QUEUE\",\"description\":\"Merges must be performed via a merge queue.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_REVIEW_THREAD_RESOLUTION\",\"description\":\"When enabled, all conversations on code must be resolved before a pull request can be merged into a branch that matches this rule.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_DEPLOYMENTS\",\"description\":\"Choose which environments must be successfully deployed to before refs can be pushed into a ref that matches this rule.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_SIGNATURES\",\"description\":\"Commits pushed to matching refs must have verified signatures.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST\",\"description\":\"Require all commits be made to a non-target branch and submitted via a pull request before they can be merged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_STATUS_CHECKS\",\"description\":\"Choose which status checks must pass before the ref is updated. When enabled, commits must first be pushed to another ref where the checks pass.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REQUIRED_WORKFLOW_STATUS_CHECKS\",\"description\":\"Require all commits be made to a non-target branch and submitted via a pull request and required workflow checks to pass before they can be merged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NON_FAST_FORWARD\",\"description\":\"Prevent users with push access from force pushing to refs.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTHORIZATION\",\"description\":\"Authorization\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TAG\",\"description\":\"Tag\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MERGE_QUEUE_LOCKED_REF\",\"description\":\"Merge queue locked ref\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOCK_BRANCH\",\"description\":\"Branch is read-only. Users cannot push to the branch.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAX_REF_UPDATES\",\"description\":\"Max ref updates\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMIT_MESSAGE_PATTERN\",\"description\":\"Commit message pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMIT_AUTHOR_EMAIL_PATTERN\",\"description\":\"Commit author email pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMITTER_EMAIL_PATTERN\",\"description\":\"Committer email pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BRANCH_NAME_PATTERN\",\"description\":\"Branch name pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TAG_NAME_PATTERN\",\"description\":\"Tag name pattern\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FILE_PATH_RESTRICTION\",\"description\":\"Prevent commits that include changes in specified file and folder paths from being pushed to the commit graph. This includes absolute paths that contain file names.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAX_FILE_PATH_LENGTH\",\"description\":\"Prevent commits that include file paths that exceed the specified character limit from being pushed to the commit graph.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FILE_EXTENSION_RESTRICTION\",\"description\":\"Prevent commits that include files with specified file extensions from being pushed to the commit graph.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAX_FILE_SIZE\",\"description\":\"Prevent commits with individual files that exceed the specified limit from being pushed to the commit graph.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WORKFLOWS\",\"description\":\"Require all changes made to a targeted branch to pass the specified workflows before they can be merged.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SECRET_SCANNING\",\"description\":\"Secret scanning\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WORKFLOW_UPDATES\",\"description\":\"Workflow files cannot be modified.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CODE_SCANNING\",\"description\":\"Choose which tools must provide code scanning results before the reference is updated. When configured, code scanning must be enabled and have results for both the commit and the reference being updated.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COPILOT_CODE_REVIEW\",\"description\":\"Request Copilot code review for new pull requests automatically if the author has access to Copilot code review and their premium requests quota has not reached the limit.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"description\":\"A repository ruleset.\",\"fields\":[{\"name\":\"bypassActors\",\"description\":\"The actors that can bypass this ruleset\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActorConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"conditions\",\"description\":\"The set of conditions that must evaluate to true for this ruleset to apply\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleConditions\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enforcement\",\"description\":\"The enforcement level of this ruleset\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RuleEnforcement\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryRuleset object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Name of the ruleset.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"rules\",\"description\":\"List of rules.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"type\",\"description\":\"The type of rule.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRuleType\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"source\",\"description\":\"Source of ruleset.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"RuleSource\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"target\",\"description\":\"Target of the ruleset.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActor\",\"description\":\"A team or app that has the ability to bypass a rules defined on a ruleset\",\"fields\":[{\"name\":\"actor\",\"description\":\"The actor that can bypass rules.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"BypassActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bypassMode\",\"description\":\"The mode for the bypass actor\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetBypassActorBypassMode\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deployKey\",\"description\":\"This actor represents the ability for a deploy key to bypass\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseOwner\",\"description\":\"This actor represents the ability for an enterprise owner to bypass\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryRulesetBypassActor object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationAdmin\",\"description\":\"This actor represents the ability for an organization owner to bypass\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryRoleDatabaseId\",\"description\":\"If the actor is a repository role, the repository role's ID that can bypass\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryRoleName\",\"description\":\"If the actor is a repository role, the repository role's name that can bypass\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryRuleset\",\"description\":\"Identifies the ruleset associated with the allowed actor\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetBypassActorBypassMode\",\"description\":\"The bypass mode for a specific actor on a ruleset.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ALWAYS\",\"description\":\"The actor can always bypass rules\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PULL_REQUEST\",\"description\":\"The actor can only bypass rules via a pull request\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EXEMPT\",\"description\":\"The actor is exempt from rules without generating a pass / fail result\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActorConnection\",\"description\":\"The connection type for RepositoryRulesetBypassActor.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActorEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetBypassActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRulesetBypassActorInput\",\"description\":\"Specifies the attributes for a new or updated ruleset bypass actor. Only one of `actor_id`, `repository_role_database_id`, `organization_admin`, or `deploy_key` should be specified.\",\"fields\":null,\"inputFields\":[{\"name\":\"actorId\",\"description\":\"For Team and Integration bypasses, the Team or Integration ID\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryRoleDatabaseId\",\"description\":\"For role bypasses, the role database ID\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationAdmin\",\"description\":\"For organization owner bypasses, true\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseOwner\",\"description\":\"For enterprise owner bypasses, true\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"deployKey\",\"description\":\"For deploy key bypasses, true. Can only use ALWAYS as the bypass mode\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"bypassMode\",\"description\":\"The bypass mode for this actor.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetBypassActorBypassMode\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetConnection\",\"description\":\"The connection type for RepositoryRuleset.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryRulesetEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"description\":\"The targets supported for rulesets.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"BRANCH\",\"description\":\"Branch\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TAG\",\"description\":\"Tag\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUSH\",\"description\":\"Push\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REPOSITORY\",\"description\":\"repository\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositorySuggestedActorFilter\",\"description\":\"The possible filters for suggested actors in a repository\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CAN_BE_ASSIGNED\",\"description\":\"Actors that can be assigned to issues and pull requests\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CAN_BE_AUTHOR\",\"description\":\"Actors that can be the author of issues and pull requests\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopic\",\"description\":\"A repository-topic connects a repository to a topic.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryTopic object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this repository-topic.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topic\",\"description\":\"The topic.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this repository-topic.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopicConnection\",\"description\":\"The connection type for RepositoryTopic.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopicEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopic\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopicEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopic\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"description\":\"The repository's visibility level.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PRIVATE\",\"description\":\"The repository is visible only to those with explicit access.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUBLIC\",\"description\":\"The repository is visible to everyone.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INTERNAL\",\"description\":\"The repository is visible only to users in the same enterprise.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeDisableAuditEntry\",\"description\":\"Audit log entry for a repository_visibility_change.disable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryVisibilityChangeDisableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVisibilityChangeEnableAuditEntry\",\"description\":\"Audit log entry for a repository_visibility_change.enable event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"enterpriseResourcePath\",\"description\":\"The HTTP path for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseSlug\",\"description\":\"The slug of the enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterpriseUrl\",\"description\":\"The HTTP URL for this enterprise.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryVisibilityChangeEnableAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"EnterpriseAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"description\":\"A Dependabot alert for a repository with a dependency affected by a security vulnerability.\",\"fields\":[{\"name\":\"autoDismissedAt\",\"description\":\"When was the alert auto-dismissed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"When was the alert created?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependabotUpdate\",\"description\":\"The associated Dependabot update\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DependabotUpdate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependencyRelationship\",\"description\":\"The relationship of an alert's dependency.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertDependencyRelationship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dependencyScope\",\"description\":\"The scope of an alert's dependency\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertDependencyScope\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissComment\",\"description\":\"Comment explaining the reason the alert was dismissed\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissReason\",\"description\":\"The reason the alert was dismissed\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissedAt\",\"description\":\"When was the alert dismissed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismisser\",\"description\":\"The user who dismissed the alert\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fixedAt\",\"description\":\"When was the alert fixed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the RepositoryVulnerabilityAlert object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the alert number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The associated repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityAdvisory\",\"description\":\"The associated security advisory\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"securityVulnerability\",\"description\":\"The associated security vulnerability\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerability\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"Identifies the state of the alert.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerableManifestFilename\",\"description\":\"The vulnerable manifest filename\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerableManifestPath\",\"description\":\"The vulnerable manifest path\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerableRequirements\",\"description\":\"The vulnerable requirements\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryNode\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlertConnection\",\"description\":\"The connection type for RepositoryVulnerabilityAlert.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlertEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertDependencyRelationship\",\"description\":\"The possible relationships of an alert's dependency.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UNKNOWN\",\"description\":\"The relationship is unknown\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DIRECT\",\"description\":\"A direct dependency of your project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TRANSITIVE\",\"description\":\"A transitive dependency of your project\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INCONCLUSIVE\",\"description\":\"The relationship could not be determined\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertDependencyScope\",\"description\":\"The possible scopes of an alert's dependency.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RUNTIME\",\"description\":\"A dependency that is leveraged during application runtime\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DEVELOPMENT\",\"description\":\"A dependency that is only used in development\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlertEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryVulnerabilityAlert\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RepositoryVulnerabilityAlertState\",\"description\":\"The possible states of an alert\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"An alert that is still open.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIXED\",\"description\":\"An alert that has been resolved by a code change.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISMISSED\",\"description\":\"An alert that has been manually closed by a user.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AUTO_DISMISSED\",\"description\":\"An alert that has been automatically closed by Dependabot.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReprioritizeSubIssueInput\",\"description\":\"Autogenerated input type of ReprioritizeSubIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The id of the parent issue.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"subIssueId\",\"description\":\"The id of the sub-issue to reprioritize.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"afterId\",\"description\":\"The id of the sub-issue to be prioritized after (either positional argument after OR before should be specified).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"beforeId\",\"description\":\"The id of the sub-issue to be prioritized before (either positional argument after OR before should be specified).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReprioritizeSubIssuePayload\",\"description\":\"Autogenerated return type of ReprioritizeSubIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The parent issue that the sub-issue was reprioritized in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequestReviewsInput\",\"description\":\"Autogenerated input type of RequestReviews\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"userIds\",\"description\":\"The Node IDs of the user to request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"botIds\",\"description\":\"The Node IDs of the bot to request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"teamIds\",\"description\":\"The Node IDs of the team to request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"union\",\"description\":\"Add users to the set rather than replace.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RequestReviewsPayload\",\"description\":\"Autogenerated return type of RequestReviews.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that is getting requests.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requestedReviewersEdge\",\"description\":\"The edge from the pull request to the requested reviewers.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserEdge\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RequestableCheckStatusState\",\"description\":\"The possible states that can be requested when creating a check run.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"QUEUED\",\"description\":\"The check suite or run has been queued.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN_PROGRESS\",\"description\":\"The check suite or run is in progress.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMPLETED\",\"description\":\"The check suite or run has been completed.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WAITING\",\"description\":\"The check suite or run is in waiting state.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING\",\"description\":\"The check suite or run is in pending state.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"description\":\"Types that can be requested reviewers.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"RequestedReviewerConnection\",\"description\":\"The connection type for RequestedReviewer.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RequestedReviewerEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RequestedReviewerEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"RequirableByPullRequest\",\"description\":\"Represents a type that can be required by a pull request for merging.\",\"fields\":[{\"name\":\"isRequired\",\"description\":\"Whether this is required to pass before merging for a specific pull request.\",\"args\":[{\"name\":\"pullRequestId\",\"description\":\"The id of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestNumber\",\"description\":\"The number of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"RequiredDeploymentsParameters\",\"description\":\"Choose which environments must be successfully deployed to before refs can be pushed into a ref that matches this rule.\",\"fields\":[{\"name\":\"requiredDeploymentEnvironments\",\"description\":\"The environments that must be successfully deployed to before branches can be merged.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredDeploymentsParametersInput\",\"description\":\"Choose which environments must be successfully deployed to before refs can be pushed into a ref that matches this rule.\",\"fields\":null,\"inputFields\":[{\"name\":\"requiredDeploymentEnvironments\",\"description\":\"The environments that must be successfully deployed to before branches can be merged.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RequiredReviewerConfiguration\",\"description\":\"A reviewing team, and file patterns describing which files they must approve changes to.\",\"fields\":[{\"name\":\"filePatterns\",\"description\":\"Array of file patterns. Pull requests which change matching files must be approved by the specified team. File patterns use fnmatch syntax.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"minimumApprovals\",\"description\":\"Minimum number of approvals required from the specified team. If set to zero, the team will be added to the pull request but approval is optional.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewerId\",\"description\":\"Node ID of the team which must review changes to matching files.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredReviewerConfigurationInput\",\"description\":\"A reviewing team, and file patterns describing which files they must approve changes to.\",\"fields\":null,\"inputFields\":[{\"name\":\"filePatterns\",\"description\":\"Array of file patterns. Pull requests which change matching files must be approved by the specified team. File patterns use fnmatch syntax.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"minimumApprovals\",\"description\":\"Minimum number of approvals required from the specified team. If set to zero, the team will be added to the pull request but approval is optional.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"reviewerId\",\"description\":\"Node ID of the team which must review changes to matching files.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RequiredStatusCheckDescription\",\"description\":\"Represents a required status check for a protected branch, but not any specific run of that check.\",\"fields\":[{\"name\":\"app\",\"description\":\"The App that must provide this status in order for it to be accepted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"context\",\"description\":\"The name of this status.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredStatusCheckInput\",\"description\":\"Specifies the attributes for a new or updated required status check.\",\"fields\":null,\"inputFields\":[{\"name\":\"context\",\"description\":\"Status check context that must pass for commits to be accepted to the matching branch.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"appId\",\"description\":\"The ID of the App that must set the status in order for it to be accepted. Omit this value to use whichever app has recently been setting this status, or use \\\"any\\\" to allow any app to set the status.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RequiredStatusChecksParameters\",\"description\":\"Choose which status checks must pass before the ref is updated. When enabled, commits must first be pushed to another ref where the checks pass.\",\"fields\":[{\"name\":\"doNotEnforceOnCreate\",\"description\":\"Allow repositories and branches to be created if a check would otherwise prohibit it.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"Status checks that are required.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckConfiguration\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"strictRequiredStatusChecksPolicy\",\"description\":\"Whether pull requests targeting a matching branch must be tested with the latest code. This setting will not take effect unless at least one status check is enabled.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredStatusChecksParametersInput\",\"description\":\"Choose which status checks must pass before the ref is updated. When enabled, commits must first be pushed to another ref where the checks pass.\",\"fields\":null,\"inputFields\":[{\"name\":\"doNotEnforceOnCreate\",\"description\":\"Allow repositories and branches to be created if a check would otherwise prohibit it.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"Status checks that are required.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StatusCheckConfigurationInput\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"strictRequiredStatusChecksPolicy\",\"description\":\"Whether pull requests targeting a matching branch must be tested with the latest code. This setting will not take effect unless at least one status check is enabled.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RerequestCheckSuiteInput\",\"description\":\"Autogenerated input type of RerequestCheckSuite\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"checkSuiteId\",\"description\":\"The Node ID of the check suite.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RerequestCheckSuitePayload\",\"description\":\"Autogenerated return type of RerequestCheckSuite.\",\"fields\":[{\"name\":\"checkSuite\",\"description\":\"The requested check suite.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"ResolveReviewThreadInput\",\"description\":\"Autogenerated input type of ResolveReviewThread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"threadId\",\"description\":\"The ID of the thread to resolve\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ResolveReviewThreadPayload\",\"description\":\"Autogenerated return type of ResolveReviewThread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"thread\",\"description\":\"The thread to resolve.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RestrictedContribution\",\"description\":\"Represents a private contribution a user made on GitHub.\",\"fields\":[{\"name\":\"isRestricted\",\"description\":\"Whether this contribution is associated with a record you do not have access to. For\\nexample, your own 'first issue' contribution may have been made on a repository you can no\\nlonger access.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"occurredAt\",\"description\":\"When this contribution was made.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this contribution.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who made this contribution.\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Contribution\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RetireSponsorsTierInput\",\"description\":\"Autogenerated input type of RetireSponsorsTier\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"The ID of the published tier to retire.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RetireSponsorsTierPayload\",\"description\":\"Autogenerated return type of RetireSponsorsTier.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsTier\",\"description\":\"The tier that was retired.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevertPullRequestInput\",\"description\":\"Autogenerated input type of RevertPullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The ID of the pull request to revert.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the revert pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The description of the revert pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"draft\",\"description\":\"Indicates whether the revert pull request should be a draft.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RevertPullRequestPayload\",\"description\":\"Autogenerated return type of RevertPullRequest.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The pull request that was reverted.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"revertPullRequest\",\"description\":\"The new pull request that reverts the input pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowance\",\"description\":\"A user, team, or app who has the ability to dismiss a review on a protected branch.\",\"fields\":[{\"name\":\"actor\",\"description\":\"The actor that can dismiss.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ReviewDismissalAllowanceActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"branchProtectionRule\",\"description\":\"Identifies the branch protection rule associated with the allowed user, team, or app.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReviewDismissalAllowance object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"ReviewDismissalAllowanceActor\",\"description\":\"Types that can be an actor.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowanceConnection\",\"description\":\"The connection type for ReviewDismissalAllowance.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowanceEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowance\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowanceEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissalAllowance\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissedEvent\",\"description\":\"Represents a 'review_dismissed' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissalMessage\",\"description\":\"Identifies the optional message associated with the 'review_dismissed' event.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dismissalMessageHTML\",\"description\":\"Identifies the optional message associated with the event, rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReviewDismissedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousReviewState\",\"description\":\"Identifies the previous state of the review with the 'review_dismissed' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestCommit\",\"description\":\"Identifies the commit which caused the review to become stale.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this review dismissed event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"review\",\"description\":\"Identifies the review associated with the 'review_dismissed' event.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this review dismissed event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequest\",\"description\":\"A request for a user to review a pull request.\",\"fields\":[{\"name\":\"asCodeOwner\",\"description\":\"Whether this request was created for a code owner\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReviewRequest object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"Identifies the pull request associated with this review request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requestedReviewer\",\"description\":\"The reviewer that is requested.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestConnection\",\"description\":\"The connection type for ReviewRequest.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReviewRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ReviewRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestRemovedEvent\",\"description\":\"Represents an 'review_request_removed' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReviewRequestRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requestedReviewer\",\"description\":\"Identifies the reviewer whose review request was removed.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewRequestedEvent\",\"description\":\"Represents an 'review_requested' event on a given pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the ReviewRequestedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"PullRequest referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"requestedReviewer\",\"description\":\"Identifies the reviewer whose review was requested.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"RequestedReviewer\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewStatusHovercardContext\",\"description\":\"A hovercard context with a message describing the current code review state of the pull\\nrequest.\\n\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewDecision\",\"description\":\"The current status of the pull request with respect to code review.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewDecision\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevokeEnterpriseOrganizationsMigratorRoleInput\",\"description\":\"Autogenerated input type of RevokeEnterpriseOrganizationsMigratorRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise to which all organizations managed by it will be granted the migrator role.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of the user to revoke the migrator role\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RevokeEnterpriseOrganizationsMigratorRolePayload\",\"description\":\"Autogenerated return type of RevokeEnterpriseOrganizationsMigratorRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizations\",\"description\":\"The organizations that had the migrator role revoked for the given user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RevokeMigratorRoleInput\",\"description\":\"Autogenerated input type of RevokeMigratorRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization that the user/team belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"actor\",\"description\":\"The user login or Team slug to revoke the migrator role from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"actorType\",\"description\":\"Specifies the type of the actor, can be either USER or TEAM.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ActorType\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"RevokeMigratorRolePayload\",\"description\":\"Autogenerated return type of RevokeMigratorRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RoleInOrganization\",\"description\":\"Possible roles a user may have in relation to an organization.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OWNER\",\"description\":\"A user with full administrative access to the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DIRECT_MEMBER\",\"description\":\"A user who is a direct member of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNAFFILIATED\",\"description\":\"A user who is unaffiliated with the organization.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"RuleEnforcement\",\"description\":\"The level of enforcement for a rule or ruleset.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DISABLED\",\"description\":\"Do not evaluate or enforce rules\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ACTIVE\",\"description\":\"Rules will be enforced\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EVALUATE\",\"description\":\"Allow admins to test rules before enforcing them. Admins can view insights on the Rule Insights page (`evaluate` is only available with GitHub Enterprise).\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"RuleParameters\",\"description\":\"Types which can be parameters for `RepositoryRule` objects.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"BranchNamePatternParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CodeScanningParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitAuthorEmailPatternParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitMessagePatternParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CommitterEmailPatternParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CopilotCodeReviewParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"FileExtensionRestrictionParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"FilePathRestrictionParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MaxFilePathLengthParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MaxFileSizeParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergeQueueParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RequiredDeploymentsParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RequiredStatusChecksParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TagNamePatternParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateParameters\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowsParameters\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"RuleParametersInput\",\"description\":\"Specifies the parameters for a `RepositoryRule` object. Only one of the fields should be specified.\",\"fields\":null,\"inputFields\":[{\"name\":\"update\",\"description\":\"Parameters used for the `update` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"mergeQueue\",\"description\":\"Parameters used for the `merge_queue` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MergeQueueParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredDeployments\",\"description\":\"Parameters used for the `required_deployments` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredDeploymentsParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequest\",\"description\":\"Parameters used for the `pull_request` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PullRequestParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"Parameters used for the `required_status_checks` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredStatusChecksParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commitMessagePattern\",\"description\":\"Parameters used for the `commit_message_pattern` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitMessagePatternParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commitAuthorEmailPattern\",\"description\":\"Parameters used for the `commit_author_email_pattern` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitAuthorEmailPatternParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"committerEmailPattern\",\"description\":\"Parameters used for the `committer_email_pattern` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CommitterEmailPatternParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"branchNamePattern\",\"description\":\"Parameters used for the `branch_name_pattern` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"BranchNamePatternParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tagNamePattern\",\"description\":\"Parameters used for the `tag_name_pattern` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TagNamePatternParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"filePathRestriction\",\"description\":\"Parameters used for the `file_path_restriction` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FilePathRestrictionParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maxFilePathLength\",\"description\":\"Parameters used for the `max_file_path_length` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MaxFilePathLengthParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fileExtensionRestriction\",\"description\":\"Parameters used for the `file_extension_restriction` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"FileExtensionRestrictionParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maxFileSize\",\"description\":\"Parameters used for the `max_file_size` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"MaxFileSizeParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"workflows\",\"description\":\"Parameters used for the `workflows` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowsParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"codeScanning\",\"description\":\"Parameters used for the `code_scanning` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CodeScanningParametersInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"copilotCodeReview\",\"description\":\"Parameters used for the `copilot_code_review` rule type\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CopilotCodeReviewParametersInput\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"RuleSource\",\"description\":\"Types which can have `RepositoryRule` objects.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"SamlDigestAlgorithm\",\"description\":\"The possible digest algorithms used to sign SAML requests for an identity provider.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SHA1\",\"description\":\"SHA1\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SHA256\",\"description\":\"SHA256\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SHA384\",\"description\":\"SHA384\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SHA512\",\"description\":\"SHA512\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SamlSignatureAlgorithm\",\"description\":\"The possible signature algorithms used to sign SAML requests for a Identity Provider.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"RSA_SHA1\",\"description\":\"RSA-SHA1\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RSA_SHA256\",\"description\":\"RSA-SHA256\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RSA_SHA384\",\"description\":\"RSA-SHA384\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RSA_SHA512\",\"description\":\"RSA-SHA512\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SavedReply\",\"description\":\"A Saved Reply is text a user can use to reply quickly.\",\"fields\":[{\"name\":\"body\",\"description\":\"The body of the saved reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The saved reply body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SavedReply object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"The title of the saved reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that saved this reply.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SavedReplyConnection\",\"description\":\"The connection type for SavedReply.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SavedReplyEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SavedReply\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SavedReplyEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SavedReply\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SavedReplyOrder\",\"description\":\"Ordering options for saved reply connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order saved replies by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SavedReplyOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SavedReplyOrderField\",\"description\":\"Properties by which saved reply connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UPDATED_AT\",\"description\":\"Order saved reply by when they were updated.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"SearchResultItem\",\"description\":\"The results of a search.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"App\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MarketplaceListing\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"SearchResultItemConnection\",\"description\":\"A list of results that matched against a search query. Regardless of the number of matches, a maximum of 1,000 results will be available across all types, potentially split across many pages.\",\"fields\":[{\"name\":\"codeCount\",\"description\":\"The total number of pieces of code that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussionCount\",\"description\":\"The total number of discussions that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SearchResultItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueCount\",\"description\":\"The total number of issues that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"SearchResultItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryCount\",\"description\":\"The total number of repositories that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userCount\",\"description\":\"The total number of users that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wikiCount\",\"description\":\"The total number of wiki pages that matched the search query. Regardless of the total number of matches, a maximum of 1,000 results will be available across all types.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SearchResultItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"SearchResultItem\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"textMatches\",\"description\":\"Text matches on the result found.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TextMatch\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SearchType\",\"description\":\"Represents the individual results of a search.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ISSUE\",\"description\":\"Returns results matching issues in repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ISSUE_ADVANCED\",\"description\":\"Returns results matching issues in repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REPOSITORY\",\"description\":\"Returns results matching repositories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER\",\"description\":\"Returns results matching users and organizations on GitHub.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISCUSSION\",\"description\":\"Returns matching discussions in repositories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"description\":\"A GitHub Security Advisory\",\"fields\":[{\"name\":\"classification\",\"description\":\"The classification of the advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryClassification\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cvss\",\"description\":\"The CVSS associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CVSS\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`cvss` will be removed. New `cvss_severities` field will now contain both `cvss_v3` and `cvss_v4` properties. Removal on 2025-10-01 UTC.\"},{\"name\":\"cvssSeverities\",\"description\":\"The CVSS associated with this advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CvssSeverities\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"cwes\",\"description\":\"CWEs associated with this Advisory\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CWEConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"This is a long plaintext description of the advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"epss\",\"description\":\"The Exploit Prediction Scoring System\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EPSS\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ghsaId\",\"description\":\"The GitHub Security Advisory ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SecurityAdvisory object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"identifiers\",\"description\":\"A list of identifiers for this advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryIdentifier\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationsPermalink\",\"description\":\"The permalink for the advisory's dependabot alerts page\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"origin\",\"description\":\"The organization that originated the advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permalink\",\"description\":\"The permalink for the advisory\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publishedAt\",\"description\":\"When the advisory was published\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"references\",\"description\":\"A list of references for this advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryReference\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"severity\",\"description\":\"The severity of the advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisorySeverity\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"summary\",\"description\":\"A short plaintext summary of the advisory\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"When the advisory was last updated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerabilities\",\"description\":\"Vulnerabilities associated with this Advisory\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for the returned topics.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityVulnerabilityOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"},{\"name\":\"ecosystem\",\"description\":\"An ecosystem to filter vulnerabilities by.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryEcosystem\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"package\",\"description\":\"A package name to filter vulnerabilities by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"severities\",\"description\":\"A list of severities to filter vulnerabilities by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisorySeverity\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"classifications\",\"description\":\"A list of advisory classifications to filter vulnerabilities by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryClassification\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerabilityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"withdrawnAt\",\"description\":\"When the advisory was withdrawn, if it has been withdrawn\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryClassification\",\"description\":\"Classification of the advisory.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GENERAL\",\"description\":\"Classification of general advisories.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MALWARE\",\"description\":\"Classification of malware advisories.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryConnection\",\"description\":\"The connection type for SecurityAdvisory.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryEcosystem\",\"description\":\"The possible ecosystems of a security vulnerability's package.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"COMPOSER\",\"description\":\"PHP packages hosted at packagist.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ERLANG\",\"description\":\"Erlang/Elixir packages hosted at hex.pm\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ACTIONS\",\"description\":\"GitHub Actions\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GO\",\"description\":\"Go modules\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MAVEN\",\"description\":\"Java artifacts hosted at the Maven central repository\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NPM\",\"description\":\"JavaScript packages hosted at npmjs.com\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NUGET\",\"description\":\".NET packages hosted at the NuGet Gallery\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PIP\",\"description\":\"Python packages hosted at PyPI.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUB\",\"description\":\"Dart packages hosted at pub.dev\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RUBYGEMS\",\"description\":\"Ruby gems hosted at RubyGems.org\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RUST\",\"description\":\"Rust crates\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SWIFT\",\"description\":\"Swift packages\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryIdentifier\",\"description\":\"A GitHub Security Advisory Identifier\",\"fields\":[{\"name\":\"type\",\"description\":\"The identifier type, e.g. GHSA, CVE\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"value\",\"description\":\"The identifier\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityAdvisoryIdentifierFilter\",\"description\":\"An advisory identifier to filter results on.\",\"fields\":null,\"inputFields\":[{\"name\":\"type\",\"description\":\"The identifier type.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryIdentifierType\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The identifier string. Supports exact or partial matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryIdentifierType\",\"description\":\"Identifier formats available for advisories.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CVE\",\"description\":\"Common Vulnerabilities and Exposures Identifier.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GHSA\",\"description\":\"GitHub Security Advisory ID.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityAdvisoryOrder\",\"description\":\"Ordering options for security advisory connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order security advisories by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryOrderField\",\"description\":\"Properties by which security advisory connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PUBLISHED_AT\",\"description\":\"Order advisories by publication time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order advisories by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EPSS_PERCENTAGE\",\"description\":\"Order advisories by EPSS percentage\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EPSS_PERCENTILE\",\"description\":\"Order advisories by EPSS percentile\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryPackage\",\"description\":\"An individual package\",\"fields\":[{\"name\":\"ecosystem\",\"description\":\"The ecosystem the package belongs to, e.g. RUBYGEMS, NPM\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisoryEcosystem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The package name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryPackageVersion\",\"description\":\"An individual package version\",\"fields\":[{\"name\":\"identifier\",\"description\":\"The package name or version\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryReference\",\"description\":\"A GitHub Security Advisory Reference\",\"fields\":[{\"name\":\"url\",\"description\":\"A publicly accessible reference\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisorySeverity\",\"description\":\"Severity of the vulnerability.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOW\",\"description\":\"Low.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MODERATE\",\"description\":\"Moderate.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HIGH\",\"description\":\"High.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CRITICAL\",\"description\":\"Critical.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerability\",\"description\":\"An individual vulnerability within an Advisory\",\"fields\":[{\"name\":\"advisory\",\"description\":\"The Advisory associated with this Vulnerability\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisory\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"firstPatchedVersion\",\"description\":\"The first version containing a fix for the vulnerability\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryPackageVersion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"package\",\"description\":\"A description of the vulnerable package\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityAdvisoryPackage\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"severity\",\"description\":\"The severity of the vulnerability within this package\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityAdvisorySeverity\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"When the vulnerability was last updated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"vulnerableVersionRange\",\"description\":\"A string that describes the vulnerable package versions.\\nThis string follows a basic syntax with a few forms.\\n+ `= 0.2.0` denotes a single vulnerable version.\\n+ `<= 1.0.8` denotes a version range up to and including the specified version\\n+ `< 0.1.11` denotes a version range up to, but excluding, the specified version\\n+ `>= 4.3.0, < 4.3.5` denotes a version range with a known minimum and maximum version.\\n+ `>= 0.0.1` denotes a version range with a known minimum, but no known maximum\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerabilityConnection\",\"description\":\"The connection type for SecurityVulnerability.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerabilityEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerability\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerabilityEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SecurityVulnerability\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SecurityVulnerabilityOrder\",\"description\":\"Ordering options for security vulnerability connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order security vulnerabilities by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SecurityVulnerabilityOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SecurityVulnerabilityOrderField\",\"description\":\"Properties by which security vulnerability connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UPDATED_AT\",\"description\":\"Order vulnerability by update time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetEnterpriseIdentityProviderInput\",\"description\":\"Autogenerated input type of SetEnterpriseIdentityProvider\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set an identity provider.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ssoUrl\",\"description\":\"The URL endpoint for the identity provider's SAML SSO.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"issuer\",\"description\":\"The Issuer Entity ID for the SAML identity provider\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"idpCertificate\",\"description\":\"The x509 certificate used by the identity provider to sign assertions and responses.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"signatureMethod\",\"description\":\"The signature algorithm used to sign SAML requests for the identity provider.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SamlSignatureAlgorithm\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"digestMethod\",\"description\":\"The digest algorithm used to sign SAML requests for the identity provider.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SamlDigestAlgorithm\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SetEnterpriseIdentityProviderPayload\",\"description\":\"Autogenerated return type of SetEnterpriseIdentityProvider.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"identityProvider\",\"description\":\"The identity provider for the enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseIdentityProvider\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetOrganizationInteractionLimitInput\",\"description\":\"Autogenerated input type of SetOrganizationInteractionLimit\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization to set a limit for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"limit\",\"description\":\"The limit to set.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimit\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"expiry\",\"description\":\"When this limit should expire.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitExpiry\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SetOrganizationInteractionLimitPayload\",\"description\":\"Autogenerated return type of SetOrganizationInteractionLimit.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that the interaction limit was set for.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetRepositoryInteractionLimitInput\",\"description\":\"Autogenerated input type of SetRepositoryInteractionLimit\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to set a limit for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"limit\",\"description\":\"The limit to set.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimit\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"expiry\",\"description\":\"When this limit should expire.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitExpiry\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SetRepositoryInteractionLimitPayload\",\"description\":\"Autogenerated return type of SetRepositoryInteractionLimit.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that the interaction limit was set for.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SetUserInteractionLimitInput\",\"description\":\"Autogenerated input type of SetUserInteractionLimit\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userId\",\"description\":\"The ID of the user to set a limit for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"limit\",\"description\":\"The limit to set.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimit\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"expiry\",\"description\":\"When this limit should expire.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryInteractionLimitExpiry\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SetUserInteractionLimitPayload\",\"description\":\"Autogenerated return type of SetUserInteractionLimit.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that the interaction limit was set for.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SmimeSignature\",\"description\":\"Represents an S/MIME signature on a Commit or Tag.\",\"fields\":[{\"name\":\"email\",\"description\":\"Email used to sign this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isValid\",\"description\":\"True if the signature is valid and verified by GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Payload for GPG signing object. Raw ODB object without the signature header.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"ASCII-armored signature header from object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signer\",\"description\":\"GitHub user corresponding to the email signing this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifiedAt\",\"description\":\"The date the signature was verified, if valid\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasSignedByGitHub\",\"description\":\"True if the signature was made with GitHub's signing key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SocialAccount\",\"description\":\"Social media profile associated with a user.\",\"fields\":[{\"name\":\"displayName\",\"description\":\"Name of the social media account as it appears on the profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"provider\",\"description\":\"Software or company that hosts the social media account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SocialAccountProvider\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"URL of the social media account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SocialAccountConnection\",\"description\":\"The connection type for SocialAccount.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SocialAccountEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SocialAccount\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SocialAccountEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SocialAccount\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SocialAccountProvider\",\"description\":\"Software or company that hosts social media accounts.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GENERIC\",\"description\":\"Catch-all for social media providers that do not yet have specific handling.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FACEBOOK\",\"description\":\"Social media and networking website.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HOMETOWN\",\"description\":\"Fork of Mastodon with a greater focus on local posting.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INSTAGRAM\",\"description\":\"Social media website with a focus on photo and video sharing.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LINKEDIN\",\"description\":\"Professional networking website.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MASTODON\",\"description\":\"Open-source federated microblogging service.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REDDIT\",\"description\":\"Social news aggregation and discussion website.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TWITCH\",\"description\":\"Live-streaming service.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TWITTER\",\"description\":\"Microblogging website.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"YOUTUBE\",\"description\":\"Online video platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLUESKY\",\"description\":\"Decentralized microblogging social platform.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NPM\",\"description\":\"JavaScript package registry.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"Sponsor\",\"description\":\"Entities that can sponsor others via GitHub Sponsors\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValue\",\"description\":\"A GitHub account and the total amount in USD they've paid for sponsorships to a particular maintainer. Does not include payments made via Patreon.\",\"fields\":[{\"name\":\"amountInCents\",\"description\":\"The amount in cents.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"formattedAmount\",\"description\":\"The amount in USD, formatted as a string.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsor\",\"description\":\"The sponsor's GitHub account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorable\",\"description\":\"The maintainer's GitHub account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueConnection\",\"description\":\"The connection type for SponsorAndLifetimeValue.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorAndLifetimeValueOrder\",\"description\":\"Ordering options for connections to get sponsor entities and associated USD amounts for GitHub Sponsors.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order results by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorAndLifetimeValueOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorAndLifetimeValueOrderField\",\"description\":\"Properties by which sponsor and lifetime value connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SPONSOR_LOGIN\",\"description\":\"Order results by the sponsor's login (username).\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SPONSOR_RELEVANCE\",\"description\":\"Order results by the sponsor's relevance to the viewer.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LIFETIME_VALUE\",\"description\":\"Order results by how much money the sponsor has paid in total.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"description\":\"A list of users and organizations sponsoring someone via GitHub Sponsors.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"Sponsor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorEdge\",\"description\":\"Represents a user or organization who is sponsoring someone in GitHub Sponsors.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Sponsor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"description\":\"Ordering options for connections to get sponsor entities for GitHub Sponsors.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order sponsor entities by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorOrderField\",\"description\":\"Properties by which sponsor connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order sponsorable entities by login (username).\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RELEVANCE\",\"description\":\"Order sponsors by their relevance to the viewer.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"description\":\"Entities that can sponsor or be sponsored through GitHub Sponsors.\",\"fields\":[{\"name\":\"estimatedNextSponsorsPayoutInCents\",\"description\":\"The estimated next GitHub Sponsors payout for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasSponsorsListing\",\"description\":\"True if this user/organization has a GitHub Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoredBy\",\"description\":\"Whether the given account is sponsoring this user/organization.\",\"args\":[{\"name\":\"accountLogin\",\"description\":\"The target account's login.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoringViewer\",\"description\":\"True if the viewer is sponsored by this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lifetimeReceivedSponsorshipValues\",\"description\":\"Calculate how much each sponsor has ever paid total to this maintainer via GitHub Sponsors. Does not include sponsorships paid via Patreon.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for results returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorAndLifetimeValueOrder\",\"ofType\":null},\"defaultValue\":\"{field: SPONSOR_LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"monthlyEstimatedSponsorsIncomeInCents\",\"description\":\"The estimated monthly GitHub Sponsors income for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsoring\",\"description\":\"List of users and organizations this entity is sponsoring.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the users and organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsors\",\"description\":\"List of sponsors for this user or organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"If given, will filter for sponsors at the given tier. Will only return sponsors whose tier the viewer is permitted to see.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsors returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsActivities\",\"description\":\"Events involving this sponsorable, such as new sponsorships.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"period\",\"description\":\"Filter activities returned to only those that occurred in the most recent specified time period. Set to ALL to avoid filtering by when the activity occurred. Will be ignored if `since` or `until` is given.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityPeriod\",\"ofType\":null},\"defaultValue\":\"MONTH\"},{\"name\":\"since\",\"description\":\"Filter activities to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter activities to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for activity returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsActivityOrder\",\"ofType\":null},\"defaultValue\":\"{field: TIMESTAMP, direction: DESC}\"},{\"name\":\"actions\",\"description\":\"Filter activities to only the specified actions.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityAction\",\"ofType\":null}}},\"defaultValue\":\"[]\"},{\"name\":\"includeAsSponsor\",\"description\":\"Whether to include those events where this sponsorable acted as the sponsor. Defaults to only including events where this sponsorable was the recipient of a sponsorship.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private activities in the result set. Defaults to including public and private activities.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors listing for this user or organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsor\",\"description\":\"The sponsorship from the viewer to this user/organization; that is, the sponsorship where you're the sponsor.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the viewer's sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsorable\",\"description\":\"The sponsorship from this user/organization to the viewer; that is, the sponsorship you're receiving.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipNewsletters\",\"description\":\"List of sponsorship updates sent from this sponsorable to sponsors.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorship updates returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipNewsletterOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsMaintainer\",\"description\":\"The sponsorships where this user or organization is the maintainer receiving the funds.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private sponsorships in the result set\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this maintainer has ever received.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsSponsor\",\"description\":\"The sponsorships where this user or organization is the funder.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maintainerLogins\",\"description\":\"Filter sponsorships returned to those for the specified maintainers. That is, the recipient of the sponsorship is a user or organization with one of the given logins.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this sponsor has ever made.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalSponsorshipAmountAsSponsorInCents\",\"description\":\"The amount in United States cents (e.g., 500 = $5.00 USD) that this entity has spent on GitHub to fund sponsorships. Only returns a value when viewed by the user themselves or by a user who can manage sponsorships for the requested organization.\",\"args\":[{\"name\":\"since\",\"description\":\"Filter payments to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter payments to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogins\",\"description\":\"Filter payments to those made to the users or organizations with the specified usernames.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSponsor\",\"description\":\"Whether or not the viewer is able to sponsor this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsSponsoring\",\"description\":\"True if the viewer is sponsoring this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"UNION\",\"name\":\"SponsorableItem\",\"description\":\"Entities that can be sponsored via GitHub Sponsors\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"SponsorableItemConnection\",\"description\":\"The connection type for SponsorableItem.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorableItemEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"SponsorableItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorableItemEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"SponsorableItem\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorableOrder\",\"description\":\"Ordering options for connections to get sponsorable entities for GitHub Sponsors.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order sponsorable entities by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorableOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorableOrderField\",\"description\":\"Properties by which sponsorable connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order sponsorable entities by login (username).\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivity\",\"description\":\"An event related to sponsorship activity.\",\"fields\":[{\"name\":\"action\",\"description\":\"What action this activity indicates took place.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityAction\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"currentPrivacyLevel\",\"description\":\"The sponsor's current privacy level.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SponsorsActivity object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"paymentSource\",\"description\":\"The platform that was used to pay for the sponsorship.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPaymentSource\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"previousSponsorsTier\",\"description\":\"The tier that the sponsorship used to use, for tier change events.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsor\",\"description\":\"The user or organization who triggered this activity and was/is sponsoring the sponsorable.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Sponsor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorable\",\"description\":\"The user or organization that is being sponsored, the maintainer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsTier\",\"description\":\"The associated sponsorship tier.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"timestamp\",\"description\":\"The timestamp of this event.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viaBulkSponsorship\",\"description\":\"Was this sponsorship made alongside other sponsorships at the same time from the same sponsor?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityAction\",\"description\":\"The possible actions that GitHub Sponsors activities can represent.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NEW_SPONSORSHIP\",\"description\":\"The activity was starting a sponsorship.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CANCELLED_SPONSORSHIP\",\"description\":\"The activity was cancelling a sponsorship.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TIER_CHANGE\",\"description\":\"The activity was changing the sponsorship tier, either directly by the sponsor or by a scheduled/pending change.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"REFUND\",\"description\":\"The activity was funds being refunded to the sponsor or GitHub.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING_CHANGE\",\"description\":\"The activity was scheduling a downgrade or cancellation.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SPONSOR_MATCH_DISABLED\",\"description\":\"The activity was disabling matching for a previously matched sponsorship.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityConnection\",\"description\":\"The connection type for SponsorsActivity.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivity\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivity\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsActivityOrder\",\"description\":\"Ordering options for GitHub Sponsors activity connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order activity by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityOrderField\",\"description\":\"Properties by which GitHub Sponsors activity connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TIMESTAMP\",\"description\":\"Order activities by when they happened.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityPeriod\",\"description\":\"The possible time periods for which Sponsors activities can be requested.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DAY\",\"description\":\"The previous calendar day.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WEEK\",\"description\":\"The previous seven days.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MONTH\",\"description\":\"The previous thirty days.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALL\",\"description\":\"Don't restrict the activity to any date range, include all activity.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsCountryOrRegionCode\",\"description\":\"Represents countries or regions for billing and residence for a GitHub Sponsors profile.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"AF\",\"description\":\"Afghanistan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AX\",\"description\":\"Åland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AL\",\"description\":\"Albania\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DZ\",\"description\":\"Algeria\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AS\",\"description\":\"American Samoa\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AD\",\"description\":\"Andorra\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AO\",\"description\":\"Angola\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AI\",\"description\":\"Anguilla\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AQ\",\"description\":\"Antarctica\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AG\",\"description\":\"Antigua and Barbuda\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AR\",\"description\":\"Argentina\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AM\",\"description\":\"Armenia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AW\",\"description\":\"Aruba\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AU\",\"description\":\"Australia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AT\",\"description\":\"Austria\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AZ\",\"description\":\"Azerbaijan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BS\",\"description\":\"Bahamas\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BH\",\"description\":\"Bahrain\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BD\",\"description\":\"Bangladesh\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BB\",\"description\":\"Barbados\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BY\",\"description\":\"Belarus\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BE\",\"description\":\"Belgium\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BZ\",\"description\":\"Belize\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BJ\",\"description\":\"Benin\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BM\",\"description\":\"Bermuda\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BT\",\"description\":\"Bhutan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BO\",\"description\":\"Bolivia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BQ\",\"description\":\"Bonaire, Sint Eustatius and Saba\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BA\",\"description\":\"Bosnia and Herzegovina\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BW\",\"description\":\"Botswana\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BV\",\"description\":\"Bouvet Island\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BR\",\"description\":\"Brazil\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IO\",\"description\":\"British Indian Ocean Territory\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BN\",\"description\":\"Brunei Darussalam\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BG\",\"description\":\"Bulgaria\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BF\",\"description\":\"Burkina Faso\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BI\",\"description\":\"Burundi\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KH\",\"description\":\"Cambodia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CM\",\"description\":\"Cameroon\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CA\",\"description\":\"Canada\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CV\",\"description\":\"Cape Verde\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KY\",\"description\":\"Cayman Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CF\",\"description\":\"Central African Republic\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TD\",\"description\":\"Chad\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CL\",\"description\":\"Chile\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CN\",\"description\":\"China\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CX\",\"description\":\"Christmas Island\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CC\",\"description\":\"Cocos (Keeling) Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CO\",\"description\":\"Colombia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KM\",\"description\":\"Comoros\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CG\",\"description\":\"Congo (Brazzaville)\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CD\",\"description\":\"Congo (Kinshasa)\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CK\",\"description\":\"Cook Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CR\",\"description\":\"Costa Rica\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CI\",\"description\":\"Côte d'Ivoire\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HR\",\"description\":\"Croatia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CW\",\"description\":\"Curaçao\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CY\",\"description\":\"Cyprus\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CZ\",\"description\":\"Czech Republic\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DK\",\"description\":\"Denmark\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DJ\",\"description\":\"Djibouti\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DM\",\"description\":\"Dominica\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DO\",\"description\":\"Dominican Republic\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EC\",\"description\":\"Ecuador\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EG\",\"description\":\"Egypt\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SV\",\"description\":\"El Salvador\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GQ\",\"description\":\"Equatorial Guinea\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ER\",\"description\":\"Eritrea\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EE\",\"description\":\"Estonia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ET\",\"description\":\"Ethiopia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FK\",\"description\":\"Falkland Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FO\",\"description\":\"Faroe Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FJ\",\"description\":\"Fiji\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FI\",\"description\":\"Finland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FR\",\"description\":\"France\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GF\",\"description\":\"French Guiana\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PF\",\"description\":\"French Polynesia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TF\",\"description\":\"French Southern Lands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GA\",\"description\":\"Gabon\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GM\",\"description\":\"Gambia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GE\",\"description\":\"Georgia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DE\",\"description\":\"Germany\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GH\",\"description\":\"Ghana\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GI\",\"description\":\"Gibraltar\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GR\",\"description\":\"Greece\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GL\",\"description\":\"Greenland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GD\",\"description\":\"Grenada\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GP\",\"description\":\"Guadeloupe\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GU\",\"description\":\"Guam\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GT\",\"description\":\"Guatemala\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GG\",\"description\":\"Guernsey\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GN\",\"description\":\"Guinea\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GW\",\"description\":\"Guinea-Bissau\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GY\",\"description\":\"Guyana\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HT\",\"description\":\"Haiti\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HM\",\"description\":\"Heard and McDonald Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HN\",\"description\":\"Honduras\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HK\",\"description\":\"Hong Kong\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"HU\",\"description\":\"Hungary\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IS\",\"description\":\"Iceland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IN\",\"description\":\"India\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ID\",\"description\":\"Indonesia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IR\",\"description\":\"Iran\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IQ\",\"description\":\"Iraq\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IE\",\"description\":\"Ireland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IM\",\"description\":\"Isle of Man\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IL\",\"description\":\"Israel\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IT\",\"description\":\"Italy\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"JM\",\"description\":\"Jamaica\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"JP\",\"description\":\"Japan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"JE\",\"description\":\"Jersey\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"JO\",\"description\":\"Jordan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KZ\",\"description\":\"Kazakhstan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KE\",\"description\":\"Kenya\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KI\",\"description\":\"Kiribati\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KR\",\"description\":\"Korea, South\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KW\",\"description\":\"Kuwait\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KG\",\"description\":\"Kyrgyzstan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LA\",\"description\":\"Laos\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LV\",\"description\":\"Latvia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LB\",\"description\":\"Lebanon\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LS\",\"description\":\"Lesotho\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LR\",\"description\":\"Liberia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LY\",\"description\":\"Libya\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LI\",\"description\":\"Liechtenstein\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LT\",\"description\":\"Lithuania\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LU\",\"description\":\"Luxembourg\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MO\",\"description\":\"Macau\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MK\",\"description\":\"Macedonia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MG\",\"description\":\"Madagascar\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MW\",\"description\":\"Malawi\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MY\",\"description\":\"Malaysia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MV\",\"description\":\"Maldives\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ML\",\"description\":\"Mali\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MT\",\"description\":\"Malta\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MH\",\"description\":\"Marshall Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MQ\",\"description\":\"Martinique\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MR\",\"description\":\"Mauritania\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MU\",\"description\":\"Mauritius\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"YT\",\"description\":\"Mayotte\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MX\",\"description\":\"Mexico\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FM\",\"description\":\"Micronesia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MD\",\"description\":\"Moldova\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MC\",\"description\":\"Monaco\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MN\",\"description\":\"Mongolia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ME\",\"description\":\"Montenegro\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MS\",\"description\":\"Montserrat\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MA\",\"description\":\"Morocco\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MZ\",\"description\":\"Mozambique\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MM\",\"description\":\"Myanmar\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NA\",\"description\":\"Namibia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NR\",\"description\":\"Nauru\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NP\",\"description\":\"Nepal\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NL\",\"description\":\"Netherlands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NC\",\"description\":\"New Caledonia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NZ\",\"description\":\"New Zealand\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NI\",\"description\":\"Nicaragua\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NE\",\"description\":\"Niger\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NG\",\"description\":\"Nigeria\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NU\",\"description\":\"Niue\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NF\",\"description\":\"Norfolk Island\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MP\",\"description\":\"Northern Mariana Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NO\",\"description\":\"Norway\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OM\",\"description\":\"Oman\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PK\",\"description\":\"Pakistan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PW\",\"description\":\"Palau\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PS\",\"description\":\"Palestine\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PA\",\"description\":\"Panama\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PG\",\"description\":\"Papua New Guinea\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PY\",\"description\":\"Paraguay\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PE\",\"description\":\"Peru\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PH\",\"description\":\"Philippines\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PN\",\"description\":\"Pitcairn\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PL\",\"description\":\"Poland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PT\",\"description\":\"Portugal\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PR\",\"description\":\"Puerto Rico\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"QA\",\"description\":\"Qatar\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RE\",\"description\":\"Reunion\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RO\",\"description\":\"Romania\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RU\",\"description\":\"Russian Federation\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RW\",\"description\":\"Rwanda\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BL\",\"description\":\"Saint Barthélemy\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SH\",\"description\":\"Saint Helena\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"KN\",\"description\":\"Saint Kitts and Nevis\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LC\",\"description\":\"Saint Lucia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MF\",\"description\":\"Saint Martin (French part)\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PM\",\"description\":\"Saint Pierre and Miquelon\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VC\",\"description\":\"Saint Vincent and the Grenadines\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WS\",\"description\":\"Samoa\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SM\",\"description\":\"San Marino\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ST\",\"description\":\"Sao Tome and Principe\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SA\",\"description\":\"Saudi Arabia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SN\",\"description\":\"Senegal\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"RS\",\"description\":\"Serbia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SC\",\"description\":\"Seychelles\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SL\",\"description\":\"Sierra Leone\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SG\",\"description\":\"Singapore\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SX\",\"description\":\"Sint Maarten (Dutch part)\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SK\",\"description\":\"Slovakia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SI\",\"description\":\"Slovenia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SB\",\"description\":\"Solomon Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SO\",\"description\":\"Somalia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ZA\",\"description\":\"South Africa\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GS\",\"description\":\"South Georgia and South Sandwich Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SS\",\"description\":\"South Sudan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ES\",\"description\":\"Spain\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LK\",\"description\":\"Sri Lanka\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SD\",\"description\":\"Sudan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SR\",\"description\":\"Suriname\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SJ\",\"description\":\"Svalbard and Jan Mayen Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SZ\",\"description\":\"Swaziland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SE\",\"description\":\"Sweden\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CH\",\"description\":\"Switzerland\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SY\",\"description\":\"Syria\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TW\",\"description\":\"Taiwan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TJ\",\"description\":\"Tajikistan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TZ\",\"description\":\"Tanzania\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TH\",\"description\":\"Thailand\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TL\",\"description\":\"Timor-Leste\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TG\",\"description\":\"Togo\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TK\",\"description\":\"Tokelau\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TO\",\"description\":\"Tonga\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TT\",\"description\":\"Trinidad and Tobago\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TN\",\"description\":\"Tunisia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TR\",\"description\":\"Türkiye\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TM\",\"description\":\"Turkmenistan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TC\",\"description\":\"Turks and Caicos Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"TV\",\"description\":\"Tuvalu\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UG\",\"description\":\"Uganda\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UA\",\"description\":\"Ukraine\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"AE\",\"description\":\"United Arab Emirates\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"GB\",\"description\":\"United Kingdom\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UM\",\"description\":\"United States Minor Outlying Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"US\",\"description\":\"United States of America\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UY\",\"description\":\"Uruguay\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UZ\",\"description\":\"Uzbekistan\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VU\",\"description\":\"Vanuatu\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VA\",\"description\":\"Vatican City\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VE\",\"description\":\"Venezuela\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VN\",\"description\":\"Vietnam\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VG\",\"description\":\"Virgin Islands, British\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VI\",\"description\":\"Virgin Islands, U.S.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"WF\",\"description\":\"Wallis and Futuna Islands\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"EH\",\"description\":\"Western Sahara\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"YE\",\"description\":\"Yemen\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ZM\",\"description\":\"Zambia\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ZW\",\"description\":\"Zimbabwe\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsGoal\",\"description\":\"A goal associated with a GitHub Sponsors listing, representing a target the sponsored maintainer would like to attain.\",\"fields\":[{\"name\":\"description\",\"description\":\"A description of the goal from the maintainer.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"kind\",\"description\":\"What the objective of this goal is.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsGoalKind\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"percentComplete\",\"description\":\"The percentage representing how complete this goal is, between 0-100.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"targetValue\",\"description\":\"What the goal amount is. Represents an amount in USD for monthly sponsorship amount goals. Represents a count of unique sponsors for total sponsors count goals.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"title\",\"description\":\"A brief summary of the kind and target value of this goal.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsGoalKind\",\"description\":\"The different kinds of goals a GitHub Sponsors member can have.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"TOTAL_SPONSORS_COUNT\",\"description\":\"The goal is about reaching a certain number of sponsors.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MONTHLY_SPONSORSHIP_AMOUNT\",\"description\":\"The goal is about getting a certain amount in USD from sponsorships each month.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"description\":\"A GitHub Sponsors listing.\",\"fields\":[{\"name\":\"activeGoal\",\"description\":\"The current goal the maintainer is trying to reach with GitHub Sponsors, if any.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsGoal\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"activeStripeConnectAccount\",\"description\":\"The Stripe Connect account currently in use for payouts for this Sponsors listing, if any. Will only return a value when queried by the maintainer themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StripeConnectAccount\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"billingCountryOrRegion\",\"description\":\"The name of the country or region with the maintainer's bank account or fiscal host. Will only return a value when queried by the maintainer themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contactEmailAddress\",\"description\":\"The email address used by GitHub to contact the sponsorable about their GitHub Sponsors profile. Will only return a value when queried by the maintainer themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dashboardResourcePath\",\"description\":\"The HTTP path for the Sponsors dashboard for this Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dashboardUrl\",\"description\":\"The HTTP URL for the Sponsors dashboard for this Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"featuredItems\",\"description\":\"The records featured on the GitHub Sponsors profile.\",\"args\":[{\"name\":\"featureableTypes\",\"description\":\"The types of featured items to return.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsListingFeaturedItemFeatureableType\",\"ofType\":null}}},\"defaultValue\":\"[REPOSITORY, USER]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListingFeaturedItem\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fiscalHost\",\"description\":\"The fiscal host used for payments, if any. Will only return a value when queried by the maintainer themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDescription\",\"description\":\"The full description of the listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fullDescriptionHTML\",\"description\":\"The full description of the listing rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SponsorsListing object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPublic\",\"description\":\"Whether this listing is publicly visible.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The listing's full name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nextPayoutDate\",\"description\":\"A future date on which this listing is eligible to receive a payout.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"residenceCountryOrRegion\",\"description\":\"The name of the country or region where the maintainer resides. Will only return a value when queried by the maintainer themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"shortDescription\",\"description\":\"The short description of the listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The short name of the listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorable\",\"description\":\"The entity this listing represents who can be sponsored on GitHub Sponsors.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tiers\",\"description\":\"The tiers for this GitHub Sponsors profile.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for Sponsors tiers returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsTierOrder\",\"ofType\":null},\"defaultValue\":\"{field: MONTHLY_PRICE_IN_CENTS, direction: ASC}\"},{\"name\":\"includeUnpublished\",\"description\":\"Whether to include tiers that aren't published. Only admins of the Sponsors listing can see draft tiers. Only admins of the Sponsors listing and viewers who are currently sponsoring on a retired tier can see those retired tiers. Defaults to including only published tiers, which are visible to anyone who can see the GitHub Sponsors profile.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"SponsorsListingFeatureableItem\",\"description\":\"A record that can be featured on a GitHub Sponsors profile.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"SponsorsListingFeaturedItem\",\"description\":\"A record that is promoted on a GitHub Sponsors profile.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"Will either be a description from the sponsorable maintainer about why they featured this item, or the item's description itself, such as a user's bio from their GitHub profile page.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"featureable\",\"description\":\"The record that is featured on the GitHub Sponsors profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"SponsorsListingFeatureableItem\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SponsorsListingFeaturedItem object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"position\",\"description\":\"The position of this featured item on the GitHub Sponsors profile with a lower position indicating higher precedence. Starts at 1.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors profile that features this record.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsListingFeaturedItemFeatureableType\",\"description\":\"The different kinds of records that can be featured on a GitHub Sponsors profile page.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"REPOSITORY\",\"description\":\"A repository owned by the user or organization with the GitHub Sponsors profile.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"USER\",\"description\":\"A user who belongs to the organization with the GitHub Sponsors profile.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"description\":\"A GitHub Sponsors tier associated with a GitHub Sponsors listing.\",\"fields\":[{\"name\":\"adminInfo\",\"description\":\"SponsorsTier information only visible to users that can administer the associated Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierAdminInfo\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"closestLesserValueTier\",\"description\":\"Get a different tier for this tier's maintainer that is at the same frequency as this tier but with an equal or lesser cost. Returns the published tier with the monthly price closest to this tier's without going over.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the tier.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"descriptionHTML\",\"description\":\"The tier description rendered to HTML\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SponsorsTier object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCustomAmount\",\"description\":\"Whether this tier was chosen at checkout time by the sponsor rather than defined ahead of time by the maintainer who manages the Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOneTime\",\"description\":\"Whether this tier is only for use with one-time sponsorships.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"monthlyPriceInCents\",\"description\":\"How much this tier costs per month in cents.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"monthlyPriceInDollars\",\"description\":\"How much this tier costs per month in USD.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the tier.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The sponsors listing that this tier belongs to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierAdminInfo\",\"description\":\"SponsorsTier information only visible to users that can administer the associated Sponsors listing.\",\"fields\":[{\"name\":\"isDraft\",\"description\":\"Indicates whether this tier is still a work in progress by the sponsorable and not yet published to the associated GitHub Sponsors profile. Draft tiers cannot be used for new sponsorships and will not be in use on existing sponsorships. Draft tiers cannot be seen by anyone but the admins of the GitHub Sponsors profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPublished\",\"description\":\"Indicates whether this tier is published to the associated GitHub Sponsors profile. Published tiers are visible to anyone who can see the GitHub Sponsors profile, and are available for use in sponsorships if the GitHub Sponsors profile is publicly visible.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRetired\",\"description\":\"Indicates whether this tier has been retired from the associated GitHub Sponsors profile. Retired tiers are no longer shown on the GitHub Sponsors profile and cannot be chosen for new sponsorships. Existing sponsorships may still use retired tiers if the sponsor selected the tier before it was retired.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorships\",\"description\":\"The sponsorships using this tier.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includePrivate\",\"description\":\"Whether or not to return private sponsorships using this tier. Defaults to only returning public sponsorships on this tier.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierConnection\",\"description\":\"The connection type for SponsorsTier.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorsTierEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsTierOrder\",\"description\":\"Ordering options for Sponsors tiers connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order tiers by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsTierOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorsTierOrderField\",\"description\":\"Properties by which Sponsors tiers connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order tiers by creation time.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MONTHLY_PRICE_IN_CENTS\",\"description\":\"Order tiers by their monthly price in cents\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"description\":\"A sponsorship relationship between a sponsor and a maintainer\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Sponsorship object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isActive\",\"description\":\"Whether the sponsorship is active. False implies the sponsor is a past sponsor of the maintainer, while true implies they are a current sponsor.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOneTimePayment\",\"description\":\"Whether this sponsorship represents a one-time payment versus a recurring sponsorship.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsorOptedIntoEmail\",\"description\":\"Whether the sponsor has chosen to receive sponsorship update emails sent from the sponsorable. Only returns a non-null value when the viewer has permission to know this.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"maintainer\",\"description\":\"The entity that is being sponsored\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"`Sponsorship.maintainer` will be removed. Use `Sponsorship.sponsorable` instead. Removal on 2020-04-01 UTC.\"},{\"name\":\"paymentSource\",\"description\":\"The platform that was most recently used to pay for the sponsorship.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPaymentSource\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"privacyLevel\",\"description\":\"The privacy level for this sponsorship.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsor\",\"description\":\"The user that is sponsoring. Returns null if the sponsorship is private or if sponsor is not a user.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"`Sponsorship.sponsor` will be removed. Use `Sponsorship.sponsorEntity` instead. Removal on 2020-10-01 UTC.\"},{\"name\":\"sponsorEntity\",\"description\":\"The user or organization that is sponsoring, if you have permission to view them.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Sponsor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorable\",\"description\":\"The entity that is being sponsored\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tier\",\"description\":\"The associated sponsorship tier\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsTier\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tierSelectedAt\",\"description\":\"Identifies the date and time when the current tier was chosen for this sponsorship.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"description\":\"A list of sponsorships either from the subject or received by the subject.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRecurringMonthlyPriceInCents\",\"description\":\"The total amount in cents of all recurring sponsorships in the connection whose amount you can view. Does not include one-time sponsorships.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalRecurringMonthlyPriceInDollars\",\"description\":\"The total amount in USD of all recurring sponsorships in the connection whose amount you can view. Does not include one-time sponsorships.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletter\",\"description\":\"An update sent to sponsors of a user or organization on GitHub Sponsors.\",\"fields\":[{\"name\":\"author\",\"description\":\"The author of the newsletter.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"body\",\"description\":\"The contents of the newsletter, the message the sponsorable wanted to give.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SponsorshipNewsletter object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPublished\",\"description\":\"Indicates if the newsletter has been made available to sponsors.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorable\",\"description\":\"The user or organization this newsletter is from.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The subject of the newsletter, what it's about.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterConnection\",\"description\":\"The connection type for SponsorshipNewsletter.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletter\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletter\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipNewsletterOrder\",\"description\":\"Ordering options for sponsorship newsletter connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order sponsorship newsletters by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipNewsletterOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorshipNewsletterOrderField\",\"description\":\"Properties by which sponsorship update connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order sponsorship newsletters by when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"description\":\"Ordering options for sponsorship connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order sponsorship by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorshipOrderField\",\"description\":\"Properties by which sponsorship connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order sponsorship by creation time.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorshipPaymentSource\",\"description\":\"How payment was made for funding a GitHub Sponsors sponsorship.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"GITHUB\",\"description\":\"Payment was made through GitHub.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PATREON\",\"description\":\"Payment was made through Patreon.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"description\":\"The privacy of a sponsorship\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PUBLIC\",\"description\":\"Public\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"Private\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SquashMergeCommitMessage\",\"description\":\"The possible default commit messages for squash merges.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PR_BODY\",\"description\":\"Default to the pull request's body.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMIT_MESSAGES\",\"description\":\"Default to the branch's commit messages.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"BLANK\",\"description\":\"Default to a blank commit message.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SquashMergeCommitTitle\",\"description\":\"The possible default commit titles for squash merges.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PR_TITLE\",\"description\":\"Default to the pull request's title.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"COMMIT_OR_PR_TITLE\",\"description\":\"Default to the commit's title (if only one commit) or the pull request's title (when more than one commit).\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SshSignature\",\"description\":\"Represents an SSH signature on a Commit or Tag.\",\"fields\":[{\"name\":\"email\",\"description\":\"Email used to sign this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isValid\",\"description\":\"True if the signature is valid and verified by GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"keyFingerprint\",\"description\":\"Hex-encoded fingerprint of the key that signed this object.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Payload for GPG signing object. Raw ODB object without the signature header.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"ASCII-armored signature header from object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signer\",\"description\":\"GitHub user corresponding to the email signing this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifiedAt\",\"description\":\"The date the signature was verified, if valid\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasSignedByGitHub\",\"description\":\"True if the signature was made with GitHub's signing key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"description\":\"Ways in which star connections can be ordered.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order nodes by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"StarOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"StarOrderField\",\"description\":\"Properties by which star connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"STARRED_AT\",\"description\":\"Allows ordering a list of stars by when they were created.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StargazerConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StargazerEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StargazerEdge\",\"description\":\"Represents a user that's starred a repository.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"starredAt\",\"description\":\"Identifies when the item was starred.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"description\":\"Things that can be starred.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Starrable object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazerCount\",\"description\":\"Returns a count of how many stargazers there are on this object\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazers\",\"description\":\"A list of users who have starred this starrable.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StargazerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasStarred\",\"description\":\"Returns a boolean indicating whether the viewing user has starred this starrable.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"StarredRepositoryConnection\",\"description\":\"The connection type for Repository.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StarredRepositoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOverLimit\",\"description\":\"Is the list of stars for this user truncated? This is true for users that have many stars.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StarredRepositoryEdge\",\"description\":\"Represents a starred repository.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"starredAt\",\"description\":\"Identifies when the item was starred.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"StartOrganizationMigrationInput\",\"description\":\"Autogenerated input type of StartOrganizationMigration\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sourceOrgUrl\",\"description\":\"The URL of the organization to migrate.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"targetOrgName\",\"description\":\"The name of the target organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"targetEnterpriseId\",\"description\":\"The ID of the enterprise the target organization belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sourceAccessToken\",\"description\":\"The migration source access token.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StartOrganizationMigrationPayload\",\"description\":\"Autogenerated return type of StartOrganizationMigration.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"orgMigration\",\"description\":\"The new organization migration.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationMigration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"StartRepositoryMigrationInput\",\"description\":\"Autogenerated input type of StartRepositoryMigration\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sourceId\",\"description\":\"The ID of the migration source.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the organization that will own the imported repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sourceRepositoryUrl\",\"description\":\"The URL of the source repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the imported repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"continueOnError\",\"description\":\"Whether to continue the migration on error. Defaults to `true`.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"gitArchiveUrl\",\"description\":\"The signed URL to access the user-uploaded git archive.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"metadataArchiveUrl\",\"description\":\"The signed URL to access the user-uploaded metadata archive.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"accessToken\",\"description\":\"The migration source access token.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"githubPat\",\"description\":\"The GitHub personal access token of the user importing to the target repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"skipReleases\",\"description\":\"Whether to skip migrating releases for the repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"targetRepoVisibility\",\"description\":\"The visibility of the imported repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockSource\",\"description\":\"Whether to lock the source repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StartRepositoryMigrationPayload\",\"description\":\"Autogenerated return type of StartRepositoryMigration.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryMigration\",\"description\":\"The new repository migration.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryMigration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Status\",\"description\":\"Represents a commit status.\",\"fields\":[{\"name\":\"combinedContexts\",\"description\":\"A list of status contexts and check runs for this commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollupContextConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"The commit this status is attached to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"context\",\"description\":\"Looks up an individual status context by context name.\",\"args\":[{\"name\":\"name\",\"description\":\"The context name.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contexts\",\"description\":\"The individual status contexts for this commit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Status object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The combined commit status.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"StatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusCheckConfiguration\",\"description\":\"Required status check\",\"fields\":[{\"name\":\"context\",\"description\":\"The status check context name that must be present on the commit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"integrationId\",\"description\":\"The optional integration ID that this status check must originate from.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"StatusCheckConfigurationInput\",\"description\":\"Required status check\",\"fields\":null,\"inputFields\":[{\"name\":\"context\",\"description\":\"The status check context name that must be present on the commit.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"integrationId\",\"description\":\"The optional integration ID that this status check must originate from.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollup\",\"description\":\"Represents the rollup for both the check runs and status for a commit.\",\"fields\":[{\"name\":\"commit\",\"description\":\"The commit the status and check runs are attached to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contexts\",\"description\":\"A list of status contexts and check runs for this commit.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollupContextConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the StatusCheckRollup object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The combined status for the commit.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"StatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"StatusCheckRollupContext\",\"description\":\"Types that can be inside a StatusCheckRollup context.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollupContextConnection\",\"description\":\"The connection type for StatusCheckRollupContext.\",\"fields\":[{\"name\":\"checkRunCount\",\"description\":\"The number of check runs in this rollup.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"checkRunCountsByState\",\"description\":\"Counts of check runs by state.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckRunStateCount\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollupContextEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"StatusCheckRollupContext\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusContextCount\",\"description\":\"The number of status contexts in this rollup.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusContextCountsByState\",\"description\":\"Counts of status contexts by state.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StatusContextStateCount\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusCheckRollupContextEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"StatusCheckRollupContext\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusContext\",\"description\":\"Represents an individual commit status context\",\"fields\":[{\"name\":\"avatarUrl\",\"description\":\"The avatar of the OAuth application or the user that created the status\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"40\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commit\",\"description\":\"This commit this status context is attached to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"context\",\"description\":\"The name of this status context.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"creator\",\"description\":\"The actor who created this status context.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description for this status context.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the StatusContext object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRequired\",\"description\":\"Whether this is required to pass before merging for a specific pull request.\",\"args\":[{\"name\":\"pullRequestId\",\"description\":\"The id of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestNumber\",\"description\":\"The number of the pull request this is required for\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this status context.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"StatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"targetUrl\",\"description\":\"The URL for this status context.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RequirableByPullRequest\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StatusContextStateCount\",\"description\":\"Represents a count of the state of a status context.\",\"fields\":[{\"name\":\"count\",\"description\":\"The number of statuses with this state.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of a status context.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"StatusState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"StatusState\",\"description\":\"The possible commit status states.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"EXPECTED\",\"description\":\"Status is expected.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ERROR\",\"description\":\"Status is errored.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FAILURE\",\"description\":\"Status is failing.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PENDING\",\"description\":\"Status is pending.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUCCESS\",\"description\":\"Status is successful.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"String\",\"description\":\"Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"StripeConnectAccount\",\"description\":\"A Stripe Connect account for receiving sponsorship funds from GitHub Sponsors.\",\"fields\":[{\"name\":\"accountId\",\"description\":\"The account number used to identify this Stripe Connect account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"billingCountryOrRegion\",\"description\":\"The name of the country or region of an external account, such as a bank account, tied to the Stripe Connect account. Will only return a value when queried by the maintainer of the associated GitHub Sponsors profile themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"countryOrRegion\",\"description\":\"The name of the country or region of the Stripe Connect account. Will only return a value when queried by the maintainer of the associated GitHub Sponsors profile themselves, or by an admin of the sponsorable organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isActive\",\"description\":\"Whether this Stripe Connect account is currently in use for the associated GitHub Sponsors profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors profile associated with this Stripe Connect account.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stripeDashboardUrl\",\"description\":\"The URL to access this Stripe Connect account on Stripe's website.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueAddedEvent\",\"description\":\"Represents a 'sub_issue_added' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SubIssueAddedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssue\",\"description\":\"The sub-issue added.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssueRemovedEvent\",\"description\":\"Represents a 'sub_issue_removed' event on a given issue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SubIssueRemovedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subIssue\",\"description\":\"The sub-issue removed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubIssuesSummary\",\"description\":\"Summary of the state of an issue's sub-issues\",\"fields\":[{\"name\":\"completed\",\"description\":\"Count of completed sub-issues\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"percentCompleted\",\"description\":\"Percent of sub-issues which are completed\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"total\",\"description\":\"Count of total number of sub-issues\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"SubmitPullRequestReviewInput\",\"description\":\"Autogenerated input type of SubmitPullRequestReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Pull Request ID to submit any pending reviews.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Pull Request Review ID to submit.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"event\",\"description\":\"The event to send to the Pull Request Review.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestReviewEvent\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The text field to set on the Pull Request Review.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubmitPullRequestReviewPayload\",\"description\":\"Autogenerated return type of SubmitPullRequestReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The submitted pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Submodule\",\"description\":\"A pointer to a repository at a specific revision embedded inside another repository.\",\"fields\":[{\"name\":\"branch\",\"description\":\"The branch of the upstream submodule for tracking updates\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gitUrl\",\"description\":\"The git URL of the submodule repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the submodule in .gitmodules\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameRaw\",\"description\":\"The name of the submodule in .gitmodules (Base64-encoded)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path in the superproject that this submodule is located in\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pathRaw\",\"description\":\"The path in the superproject that this submodule is located in (Base64-encoded)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subprojectCommitOid\",\"description\":\"The commit revision of the subproject repository being tracked by the submodule\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubmoduleConnection\",\"description\":\"The connection type for Submodule.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SubmoduleEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Submodule\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SubmoduleEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Submodule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"description\":\"Entities that can be subscribed to for web and email notifications.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Subscribable object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null}]},{\"kind\":\"INTERFACE\",\"name\":\"SubscribableThread\",\"description\":\"Entities that can be subscribed to for web and email notifications.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the SubscribableThread object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerThreadSubscriptionFormAction\",\"description\":\"Identifies the viewer's thread subscription form action.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionFormAction\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerThreadSubscriptionStatus\",\"description\":\"Identifies the viewer's thread subscription status.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"SubscribedEvent\",\"description\":\"Represents a 'subscribed' event on a given `Subscribable`.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the SubscribedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subscribable\",\"description\":\"Object referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"description\":\"The possible states of a subscription.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UNSUBSCRIBED\",\"description\":\"The User is only notified when participating or @mentioned.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED\",\"description\":\"The User is notified of all conversations.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IGNORED\",\"description\":\"The User is never notified.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewer\",\"description\":\"A suggestion to review a pull request based on a user's commit history and review comments.\",\"fields\":[{\"name\":\"isAuthor\",\"description\":\"Is this suggestion based on past commits?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCommenter\",\"description\":\"Is this suggestion based on past review comments?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewer\",\"description\":\"Identifies the user suggested to review the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActor\",\"description\":\"A suggestion to review a pull request based on an actor's commit history, review comments, and integrations.\",\"fields\":[{\"name\":\"isAuthor\",\"description\":\"Is this suggestion based on past commits?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCommenter\",\"description\":\"Is this suggestion based on past review comments?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewer\",\"description\":\"Identifies the actor suggested to review the pull request.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActorConnection\",\"description\":\"A suggestion to review a pull request based on an actor's commit history, review comments, and integrations.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActorEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActor\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActorEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SuggestedReviewerActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Tag\",\"description\":\"Represents a Git tag.\",\"fields\":[{\"name\":\"abbreviatedOid\",\"description\":\"An abbreviated version of the Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitResourcePath\",\"description\":\"The HTTP path for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitUrl\",\"description\":\"The HTTP URL for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Tag object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"The Git tag message.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The Git tag name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"The Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the Git object belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tagger\",\"description\":\"Details about the tag author.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"GitActor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"target\",\"description\":\"The Git object the tag points to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TagNamePatternParameters\",\"description\":\"Parameters to be used for the tag_name_pattern rule\",\"fields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TagNamePatternParametersInput\",\"description\":\"Parameters to be used for the tag_name_pattern rule\",\"fields\":null,\"inputFields\":[{\"name\":\"name\",\"description\":\"How this rule will appear to users.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"negate\",\"description\":\"If true, the rule will fail if the pattern matches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"operator\",\"description\":\"The operator to use for matching.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The pattern to match with.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Team\",\"description\":\"A team of users in an organization.\",\"fields\":[{\"name\":\"ancestors\",\"description\":\"A list of teams that are ancestors of this team.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the team's avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size in pixels of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"400\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"childTeams\",\"description\":\"List of child teams belonging to this team\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userLogins\",\"description\":\"User logins to filter by\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"immediateOnly\",\"description\":\"Whether to list immediate child teams or all descendant child teams.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"combinedSlug\",\"description\":\"The slug corresponding to the organization and team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of the team.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"Find a team discussion by its number.\",\"args\":[{\"name\":\"number\",\"description\":\"The sequence number of the discussion to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussions\",\"description\":\"A list of team discussions.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isPinned\",\"description\":\"If provided, filters discussions according to whether or not they are pinned.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamDiscussionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussionsResourcePath\",\"description\":\"The HTTP path for team discussions\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussionsUrl\",\"description\":\"The HTTP URL for team discussions\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editTeamResourcePath\",\"description\":\"The HTTP path for editing this team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editTeamUrl\",\"description\":\"The HTTP URL for editing this team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Team object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invitations\",\"description\":\"A list of pending invitations for users to this team\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationInvitationConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"memberStatuses\",\"description\":\"Get the status messages members of this entity have set that are either public or visible only to the organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for user statuses returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"UserStatusOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserStatusConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"members\",\"description\":\"A list of users who are members of this team.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"membership\",\"description\":\"Filter by membership type\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamMembershipType\",\"ofType\":null},\"defaultValue\":\"ALL\"},{\"name\":\"role\",\"description\":\"Filter by team member role\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamMemberRole\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamMemberOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamMemberConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersResourcePath\",\"description\":\"The HTTP path for the team' members\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"membersUrl\",\"description\":\"The HTTP URL for the team' members\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newTeamResourcePath\",\"description\":\"The HTTP path creating a new team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"newTeamUrl\",\"description\":\"The HTTP URL creating a new team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationSetting\",\"description\":\"The notification setting that the team has set.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamNotificationSetting\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that owns this team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"parentTeam\",\"description\":\"The parent team of the team.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"privacy\",\"description\":\"The level of privacy the team has.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamPrivacy\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"Finds and returns the project according to the provided project number.\",\"args\":[{\"name\":\"number\",\"description\":\"The Project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"List of projects this team has collaborator access to.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"filterBy\",\"description\":\"Filtering options for projects returned from this connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Filters\",\"ofType\":null},\"defaultValue\":\"{}\"},{\"name\":\"query\",\"description\":\"The query to search projects by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"\\\"\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"A list of repositories this team has access to.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for. Repositories will be returned where the name contains your search string.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamRepositoryOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamRepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoriesResourcePath\",\"description\":\"The HTTP path for this team's repositories\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoriesUrl\",\"description\":\"The HTTP URL for this team's repositories\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewRequestDelegationAlgorithm\",\"description\":\"What algorithm is used for review assignment for this team\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamReviewAssignmentAlgorithm\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewRequestDelegationEnabled\",\"description\":\"True if review assignment is enabled for this team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewRequestDelegationMemberCount\",\"description\":\"How many team members are required for review assignment for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reviewRequestDelegationNotifyTeam\",\"description\":\"When assigning team members via delegation, whether the entire team should be notified as well.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The slug corresponding to the team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsResourcePath\",\"description\":\"The HTTP path for this team's teams\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamsUrl\",\"description\":\"The HTTP URL for this team's teams\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanAdminister\",\"description\":\"Team is adminable by the viewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"MemberStatusable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"description\":\"Audit log entry for a team.add_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the TeamAddMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLdapMapped\",\"description\":\"Whether the team was mapped to an LDAP Group.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"description\":\"Audit log entry for a team.add_repository event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the TeamAddRepositoryAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLdapMapped\",\"description\":\"Whether the team was mapped to an LDAP Group.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"description\":\"Metadata for an audit entry with action team.*\",\"fields\":[{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"OrgRestoreMemberMembershipTeamAuditEntryData\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamAddRepositoryAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"TeamChangeParentTeamAuditEntry\",\"description\":\"Audit log entry for a team.change_parent_team event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the TeamChangeParentTeamAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLdapMapped\",\"description\":\"Whether the team was mapped to an LDAP Group.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeam\",\"description\":\"The new parent team.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamName\",\"description\":\"The name of the new parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamNameWas\",\"description\":\"The name of the former parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamResourcePath\",\"description\":\"The HTTP path for the parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamUrl\",\"description\":\"The HTTP URL for the parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamWas\",\"description\":\"The former parent team.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamWasResourcePath\",\"description\":\"The HTTP path for the previous parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"parentTeamWasUrl\",\"description\":\"The HTTP URL for the previous parent team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamConnection\",\"description\":\"The connection type for Team.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"description\":\"A team discussion.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the discussion's team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyVersion\",\"description\":\"Identifies the discussion body hash.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"comments\",\"description\":\"A list of comments on this discussion.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamDiscussionCommentOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fromComment\",\"description\":\"When provided, filters the connection such that results begin with the comment with this number.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"commentsResourcePath\",\"description\":\"The HTTP path for discussion comments\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"commentsUrl\",\"description\":\"The HTTP URL for discussion comments\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the TeamDiscussion object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPinned\",\"description\":\"Whether or not the discussion is pinned.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"isPrivate\",\"description\":\"Whether or not the discussion is only visible to team members and organization owners.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the discussion within its team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this discussion\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"team\",\"description\":\"The team that defines the context of this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"title\",\"description\":\"The title of the discussion\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this discussion\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanPin\",\"description\":\"Whether or not the current viewer can pin this discussion.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSubscribe\",\"description\":\"Check if the viewer is able to change their subscription status for the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerSubscription\",\"description\":\"Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"description\":\"A comment on a team discussion.\",\"fields\":[{\"name\":\"author\",\"description\":\"The actor who authored the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"authorAssociation\",\"description\":\"Author's association with the comment's team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentAuthorAssociation\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"body\",\"description\":\"The body as Markdown.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyHTML\",\"description\":\"The body rendered to HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyText\",\"description\":\"The body rendered to text.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bodyVersion\",\"description\":\"The current version of the body content.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdViaEmail\",\"description\":\"Check if this comment was created via an email reply.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion this comment is about.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"editor\",\"description\":\"The actor who edited the comment.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the TeamDiscussionComment object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"includesCreatedEdit\",\"description\":\"Check if this comment was edited and includes an edit with the creation data\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastEditedAt\",\"description\":\"The moment the editor made the last edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"number\",\"description\":\"Identifies the comment number.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"publishedAt\",\"description\":\"Identifies when the comment was published at.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactionGroups\",\"description\":\"A list of reactions grouped by content left on the subject.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionGroup\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"reactions\",\"description\":\"A list of Reactions left on the Issue.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"content\",\"description\":\"Allows filtering Reactions by emoji.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ReactionContent\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Allows specifying the order in which reactions are returned.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ReactionOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ReactionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this comment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this comment\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The Team Discussions feature is deprecated in favor of Organization Discussions. Follow the guide at https://github.blog/changelog/2023-02-08-sunset-notice-team-discussions/ to find a suitable replacement. Removal on 2024-07-01 UTC.\"},{\"name\":\"userContentEdits\",\"description\":\"A list of edits to this content.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanDelete\",\"description\":\"Check if the current viewer can delete this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReact\",\"description\":\"Can user react to this subject\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerDidAuthor\",\"description\":\"Did the viewer author this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Comment\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Deletable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Reactable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionCommentConnection\",\"description\":\"The connection type for TeamDiscussionComment.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionCommentEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionCommentEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamDiscussionCommentOrder\",\"description\":\"Ways in which team discussion comment connections can be ordered.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamDiscussionCommentOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamDiscussionCommentOrderField\",\"description\":\"Properties by which team discussion comment connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NUMBER\",\"description\":\"Allows sequential ordering of team discussion comments (which is equivalent to chronological ordering).\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionConnection\",\"description\":\"The connection type for TeamDiscussion.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamDiscussionOrder\",\"description\":\"Ways in which team discussion connections can be ordered.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamDiscussionOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamDiscussionOrderField\",\"description\":\"Properties by which team discussion connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Allows chronological ordering of team discussions.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamMemberConnection\",\"description\":\"The connection type for User.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamMemberEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamMemberEdge\",\"description\":\"Represents a user who is a member of a team.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"memberAccessResourcePath\",\"description\":\"The HTTP path to the organization's member access page.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"memberAccessUrl\",\"description\":\"The HTTP URL to the organization's member access page.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"role\",\"description\":\"The role the member has on the team.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamMemberRole\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamMemberOrder\",\"description\":\"Ordering options for team member connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order team members by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamMemberOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamMemberOrderField\",\"description\":\"Properties by which team member connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"LOGIN\",\"description\":\"Order team members by login\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order team members by creation time\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamMemberRole\",\"description\":\"The possible team member roles; either 'maintainer' or 'member'.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"MAINTAINER\",\"description\":\"A team maintainer has permission to add and remove team members.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MEMBER\",\"description\":\"A team member has no administrative permissions on the team.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamMembershipType\",\"description\":\"Defines which types of team members are included in the returned list. Can be one of IMMEDIATE, CHILD_TEAM or ALL.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"IMMEDIATE\",\"description\":\"Includes only immediate members of the team.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CHILD_TEAM\",\"description\":\"Includes only child team members for the team.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ALL\",\"description\":\"Includes immediate and child team members for the team.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamNotificationSetting\",\"description\":\"The possible team notification values.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NOTIFICATIONS_ENABLED\",\"description\":\"Everyone will receive notifications when the team is @mentioned.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NOTIFICATIONS_DISABLED\",\"description\":\"No one will receive notifications.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamOrder\",\"description\":\"Ways in which team connections can be ordered.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field in which to order nodes by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order nodes.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamOrderField\",\"description\":\"Properties by which team connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NAME\",\"description\":\"Allows ordering a list of teams by name.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamPrivacy\",\"description\":\"The possible team privacy values.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SECRET\",\"description\":\"A secret team can only be seen by its members.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VISIBLE\",\"description\":\"A visible team can be seen and @mentioned by every member of the organization.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveMemberAuditEntry\",\"description\":\"Audit log entry for a team.remove_member event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the TeamRemoveMemberAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLdapMapped\",\"description\":\"Whether the team was mapped to an LDAP Group.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRemoveRepositoryAuditEntry\",\"description\":\"Audit log entry for a team.remove_repository event.\",\"fields\":[{\"name\":\"action\",\"description\":\"The action name\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actor\",\"description\":\"The user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"AuditEntryActor\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorIp\",\"description\":\"The IP address of the actor\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLocation\",\"description\":\"A readable representation of the actor's location\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ActorLocation\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorLogin\",\"description\":\"The username of the user who initiated the action\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorResourcePath\",\"description\":\"The HTTP path for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"actorUrl\",\"description\":\"The HTTP URL for the actor.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"createdAt\",\"description\":\"The time the action was initiated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"PreciseDateTime\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"id\",\"description\":\"The Node ID of the TeamRemoveRepositoryAuditEntry object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isLdapMapped\",\"description\":\"Whether the team was mapped to an LDAP Group.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"operationType\",\"description\":\"The corresponding operation type for the action\",\"args\":[],\"type\":{\"kind\":\"ENUM\",\"name\":\"OperationType\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organization\",\"description\":\"The Organization associated with the Audit Entry.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationName\",\"description\":\"The name of the Organization.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationResourcePath\",\"description\":\"The HTTP path for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"organizationUrl\",\"description\":\"The HTTP URL for the organization\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"repository\",\"description\":\"The repository associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The name of the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryResourcePath\",\"description\":\"The HTTP path for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryUrl\",\"description\":\"The HTTP URL for the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"The team associated with the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamName\",\"description\":\"The name of the team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamResourcePath\",\"description\":\"The HTTP path for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamUrl\",\"description\":\"The HTTP URL for this team\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user affected by the action\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userLogin\",\"description\":\"For actions involving two users, the actor is the initiator and the user is the affected user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userResourcePath\",\"description\":\"The HTTP path for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"},{\"name\":\"userUrl\",\"description\":\"The HTTP URL for the user.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"The GraphQL audit-log is deprecated. Please use the REST API instead. Removal on 2026-04-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"AuditEntry\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"OrganizationAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryAuditEntryData\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"TeamAuditEntryData\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRepositoryConnection\",\"description\":\"The connection type for Repository.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TeamRepositoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamRepositoryEdge\",\"description\":\"Represents a team repository.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"permission\",\"description\":\"The permission level the team has on the repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TeamRepositoryOrder\",\"description\":\"Ordering options for team repository connections\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order repositories by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"TeamRepositoryOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamRepositoryOrderField\",\"description\":\"Properties by which team repository connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order repositories by creation time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UPDATED_AT\",\"description\":\"Order repositories by update time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PUSHED_AT\",\"description\":\"Order repositories by push time\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NAME\",\"description\":\"Order repositories by name\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PERMISSION\",\"description\":\"Order repositories by permission\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"STARGAZERS\",\"description\":\"Order repositories by number of stargazers\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamReviewAssignmentAlgorithm\",\"description\":\"The possible team review assignment algorithms\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ROUND_ROBIN\",\"description\":\"Alternate reviews between each team member\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LOAD_BALANCE\",\"description\":\"Balance review load across the entire team\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TeamRole\",\"description\":\"The role of a user on a team.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ADMIN\",\"description\":\"User has admin rights on the team.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MEMBER\",\"description\":\"User is a member of the team.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TextMatch\",\"description\":\"A text match within a search result.\",\"fields\":[{\"name\":\"fragment\",\"description\":\"The specific text fragment within the property matched on.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"highlights\",\"description\":\"Highlights within the matched fragment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TextMatchHighlight\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"property\",\"description\":\"The property matched on.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TextMatchHighlight\",\"description\":\"Represents a single highlight in a search result match.\",\"fields\":[{\"name\":\"beginIndice\",\"description\":\"The indice in the fragment where the matched text begins.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"endIndice\",\"description\":\"The indice in the fragment where the matched text ends.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"text\",\"description\":\"The text matched.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionFormAction\",\"description\":\"The possible states of a thread subscription form action\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NONE\",\"description\":\"The User cannot subscribe or unsubscribe to the thread\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBE\",\"description\":\"The User can subscribe to the thread\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNSUBSCRIBE\",\"description\":\"The User can unsubscribe to the thread\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"ThreadSubscriptionState\",\"description\":\"The possible states of a subscription.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UNAVAILABLE\",\"description\":\"The subscription status is currently unavailable.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"The subscription status is currently disabled.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IGNORING_LIST\",\"description\":\"The User is never notified because they are ignoring the list\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_TO_THREAD_EVENTS\",\"description\":\"The User is notified because they chose custom settings for this thread.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"IGNORING_THREAD\",\"description\":\"The User is never notified because they are ignoring the thread\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_TO_LIST\",\"description\":\"The User is notified becuase they are watching the list\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_TO_THREAD_TYPE\",\"description\":\"The User is notified because they chose custom settings for this thread.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIBED_TO_THREAD\",\"description\":\"The User is notified because they are subscribed to the thread\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NONE\",\"description\":\"The User is not recieving notifications from this thread\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"description\":\"A topic aggregates entities that are related to a subject.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the Topic object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The topic's name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"relatedTopics\",\"description\":\"A list of related topics, including aliases of this topic, sorted with the most relevant\\nfirst. Returns up to 10 Topics.\\n\",\"args\":[{\"name\":\"first\",\"description\":\"How many topics to return.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"3\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"A list of repositories.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableOnly\",\"description\":\"If true, only repositories whose owner can be sponsored via GitHub Sponsors will be returned.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazerCount\",\"description\":\"Returns a count of how many stargazers there are on this object\\n\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"stargazers\",\"description\":\"A list of users who have starred this starrable.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StargazerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasStarred\",\"description\":\"Returns a boolean indicating whether the viewing user has starred this starrable.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Starrable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"TopicAuditEntryData\",\"description\":\"Metadata for an audit entry with a topic.\",\"fields\":[{\"name\":\"topic\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Topic\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topicName\",\"description\":\"The name of the topic added to the repository\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"RepoAddTopicAuditEntry\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepoRemoveTopicAuditEntry\",\"ofType\":null}]},{\"kind\":\"ENUM\",\"name\":\"TopicSuggestionDeclineReason\",\"description\":\"Reason that the suggested topic is declined.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"NOT_RELEVANT\",\"description\":\"The suggested topic is not relevant to the repository.\",\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"},{\"name\":\"TOO_SPECIFIC\",\"description\":\"The suggested topic is too specific for the repository (e.g. #ruby-on-rails-version-4-2-1).\",\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"},{\"name\":\"PERSONAL_PREFERENCE\",\"description\":\"The viewer does not like the suggested topic.\",\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"},{\"name\":\"TOO_GENERAL\",\"description\":\"The suggested topic is too general for the repository.\",\"isDeprecated\":true,\"deprecationReason\":\"Suggested topics are no longer supported Removal on 2024-04-01 UTC.\"}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TrackedIssueStates\",\"description\":\"The possible states of a tracked issue.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"OPEN\",\"description\":\"The tracked issue is open\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CLOSED\",\"description\":\"The tracked issue is closed\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TransferEnterpriseOrganizationInput\",\"description\":\"Autogenerated input type of TransferEnterpriseOrganization\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization to transfer.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"destinationEnterpriseId\",\"description\":\"The ID of the enterprise where the organization should be transferred.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferEnterpriseOrganizationPayload\",\"description\":\"Autogenerated return type of TransferEnterpriseOrganization.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization for which a transfer was initiated.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"TransferIssueInput\",\"description\":\"Autogenerated input type of TransferIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The Node ID of the issue to be transferred\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository the issue should be transferred to\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"createLabelsIfMissing\",\"description\":\"Whether to create labels if they don't exist in the target repository (matched by name)\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferIssuePayload\",\"description\":\"Autogenerated return type of TransferIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was transferred\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TransferredEvent\",\"description\":\"Represents a 'transferred' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fromRepository\",\"description\":\"The repository this came from\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the TransferredEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"Identifies the issue associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"Tree\",\"description\":\"Represents a Git tree.\",\"fields\":[{\"name\":\"abbreviatedOid\",\"description\":\"An abbreviated version of the Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitResourcePath\",\"description\":\"The HTTP path for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitUrl\",\"description\":\"The HTTP URL for this Git object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"entries\",\"description\":\"A list of tree entries.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"TreeEntry\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Tree object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"The Git object ID\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the Git object belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"TreeEntry\",\"description\":\"Represents a Git tree entry.\",\"fields\":[{\"name\":\"extension\",\"description\":\"The extension of the file\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isGenerated\",\"description\":\"Whether or not this tree entry is generated\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"language\",\"description\":\"The programming language this file is written in.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Language\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lineCount\",\"description\":\"Number of lines in the file.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mode\",\"description\":\"Entry file mode.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"Entry file name.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameRaw\",\"description\":\"Entry file name. (Base64-encoded)\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"object\",\"description\":\"Entry file object.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"GitObject\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"oid\",\"description\":\"Entry file Git object ID.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The full path of the file.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pathRaw\",\"description\":\"The full path of the file. (Base64-encoded)\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Base64String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The Repository the tree entry belongs to\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"size\",\"description\":\"Entry byte size\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"submodule\",\"description\":\"If the TreeEntry is for a directory occupied by a submodule project, this returns the corresponding submodule\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Submodule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"Entry file type.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"TwoFactorCredentialSecurityType\",\"description\":\"Filters by whether or not 2FA is enabled and if the method configured is considered secure or insecure.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SECURE\",\"description\":\"Has only secure methods of two-factor authentication.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INSECURE\",\"description\":\"Has an insecure method of two-factor authentication. GitHub currently defines this as SMS two-factor authentication.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED\",\"description\":\"No method of two-factor authentication.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"URI\",\"description\":\"An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnarchiveProjectV2ItemInput\",\"description\":\"Autogenerated input type of UnarchiveProjectV2Item\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to archive the item from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the ProjectV2Item to unarchive.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnarchiveProjectV2ItemPayload\",\"description\":\"Autogenerated return type of UnarchiveProjectV2Item.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The item unarchived from the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnarchiveRepositoryInput\",\"description\":\"Autogenerated input type of UnarchiveRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to unarchive.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnarchiveRepositoryPayload\",\"description\":\"Autogenerated return type of UnarchiveRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that was unarchived.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnassignedEvent\",\"description\":\"Represents an 'unassigned' event on any assignable object.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignable\",\"description\":\"Identifies the assignable associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Assignable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"assignee\",\"description\":\"Identifies the user or mannequin that was unassigned.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"Assignee\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnassignedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"Identifies the subject (user) who was unassigned.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.\"}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnfollowOrganizationInput\",\"description\":\"Autogenerated input type of UnfollowOrganization\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"ID of the organization to unfollow.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnfollowOrganizationPayload\",\"description\":\"Autogenerated return type of UnfollowOrganization.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization that was unfollowed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnfollowUserInput\",\"description\":\"Autogenerated input type of UnfollowUser\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"userId\",\"description\":\"ID of the user to unfollow.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnfollowUserPayload\",\"description\":\"Autogenerated return type of UnfollowUser.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user that was unfollowed.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"description\":\"Represents a type that can be retrieved by a URL.\",\"fields\":[{\"name\":\"resourcePath\",\"description\":\"The HTML path to this resource.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The URL to this resource.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Bot\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ClosedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Commit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ConvertToDraftEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"CrossReferencedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Mannequin\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"MergedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Milestone\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestCommit\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReadyForReviewEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Release\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"RepositoryTopic\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ReviewDismissedEvent\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Workflow\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunFile\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"UnknownSignature\",\"description\":\"Represents an unknown signature on a Commit or Tag.\",\"fields\":[{\"name\":\"email\",\"description\":\"Email used to sign this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isValid\",\"description\":\"True if the signature is valid and verified by GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"payload\",\"description\":\"Payload for GPG signing object. Raw ODB object without the signature header.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signature\",\"description\":\"ASCII-armored signature header from object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"signer\",\"description\":\"GitHub user corresponding to the email signing this commit.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"GitSignatureState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verifiedAt\",\"description\":\"The date the signature was verified, if valid\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"wasSignedByGitHub\",\"description\":\"True if the signature was made with GitHub's signing key.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"GitSignature\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlabeledEvent\",\"description\":\"Represents an 'unlabeled' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnlabeledEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"Identifies the label associated with the 'unlabeled' event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"labelable\",\"description\":\"Identifies the `Labelable` associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Labelable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkProjectV2FromRepositoryInput\",\"description\":\"Autogenerated input type of UnlinkProjectV2FromRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the project to unlink from the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to unlink from the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlinkProjectV2FromRepositoryPayload\",\"description\":\"Autogenerated return type of UnlinkProjectV2FromRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository the project is no longer linked to.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkProjectV2FromTeamInput\",\"description\":\"Autogenerated input type of UnlinkProjectV2FromTeam\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the project to unlink from the team.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"teamId\",\"description\":\"The ID of the team to unlink from the project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlinkProjectV2FromTeamPayload\",\"description\":\"Autogenerated return type of UnlinkProjectV2FromTeam.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"The team the project is unlinked from\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlinkRepositoryFromProjectInput\",\"description\":\"Autogenerated input type of UnlinkRepositoryFromProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project linked to the Repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the Repository linked to the Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlinkRepositoryFromProjectPayload\",\"description\":\"Autogenerated return type of UnlinkRepositoryFromProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The linked Project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The linked Repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnlockLockableInput\",\"description\":\"Autogenerated input type of UnlockLockable\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockableId\",\"description\":\"ID of the item to be unlocked.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockLockablePayload\",\"description\":\"Autogenerated return type of UnlockLockable.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unlockedRecord\",\"description\":\"The item that was unlocked.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnlockedEvent\",\"description\":\"Represents an 'unlocked' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnlockedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lockable\",\"description\":\"Object that was unlocked.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Lockable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkDiscussionCommentAsAnswerInput\",\"description\":\"Autogenerated input type of UnmarkDiscussionCommentAsAnswer\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the discussion comment to unmark as an answer.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkDiscussionCommentAsAnswerPayload\",\"description\":\"Autogenerated return type of UnmarkDiscussionCommentAsAnswer.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The discussion that includes the comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkFileAsViewedInput\",\"description\":\"Autogenerated input type of UnmarkFileAsViewed\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"path\",\"description\":\"The path of the file to mark as unviewed\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkFileAsViewedPayload\",\"description\":\"Autogenerated return type of UnmarkFileAsViewed.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The updated pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkIssueAsDuplicateInput\",\"description\":\"Autogenerated input type of UnmarkIssueAsDuplicate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"duplicateId\",\"description\":\"ID of the issue or pull request currently marked as a duplicate.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"canonicalId\",\"description\":\"ID of the issue or pull request currently considered canonical/authoritative/original.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkIssueAsDuplicatePayload\",\"description\":\"Autogenerated return type of UnmarkIssueAsDuplicate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duplicate\",\"description\":\"The issue or pull request that was marked as a duplicate.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnmarkProjectV2AsTemplateInput\",\"description\":\"Autogenerated input type of UnmarkProjectV2AsTemplate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to unmark as a template.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkProjectV2AsTemplatePayload\",\"description\":\"Autogenerated return type of UnmarkProjectV2AsTemplate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnmarkedAsDuplicateEvent\",\"description\":\"Represents an 'unmarked_as_duplicate' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"canonical\",\"description\":\"The authoritative issue or pull request which has been duplicated by another.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"duplicate\",\"description\":\"The issue or pull request which has been marked as a duplicate of another.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IssueOrPullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnmarkedAsDuplicateEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCrossRepository\",\"description\":\"Canonical and duplicate belong to different repositories.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnminimizeCommentInput\",\"description\":\"Autogenerated input type of UnminimizeComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subjectId\",\"description\":\"The Node ID of the subject to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnminimizeCommentPayload\",\"description\":\"Autogenerated return type of UnminimizeComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"unminimizedComment\",\"description\":\"The comment that was unminimized.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Minimizable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnpinIssueInput\",\"description\":\"Autogenerated input type of UnpinIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the issue to be unpinned\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnpinIssuePayload\",\"description\":\"Autogenerated return type of UnpinIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The id of the pinned issue that was unpinned\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue that was unpinned\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnpinnedEvent\",\"description\":\"Represents an 'unpinned' event on a given issue or pull request.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnpinnedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"Identifies the issue associated with the event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnresolveReviewThreadInput\",\"description\":\"Autogenerated input type of UnresolveReviewThread\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"threadId\",\"description\":\"The ID of the thread to unresolve\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnresolveReviewThreadPayload\",\"description\":\"Autogenerated return type of UnresolveReviewThread.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"thread\",\"description\":\"The thread to resolve.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewThread\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UnsubscribeFromNotificationsInput\",\"description\":\"Autogenerated input type of UnsubscribeFromNotifications\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ids\",\"description\":\"The NotificationThread IDs of the objects to unsubscribe from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribeFromNotificationsPayload\",\"description\":\"Autogenerated return type of UnsubscribeFromNotifications.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"success\",\"description\":\"Did the operation succeed?\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UnsubscribedEvent\",\"description\":\"Represents an 'unsubscribed' event on a given `Subscribable`.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UnsubscribedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subscribable\",\"description\":\"Object referenced by event.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Updatable\",\"description\":\"Entities that can be updated.\",\"fields\":[{\"name\":\"viewerCanUpdate\",\"description\":\"Check if the current viewer can update this object.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}]},{\"kind\":\"INTERFACE\",\"name\":\"UpdatableComment\",\"description\":\"Comments that can be updated.\",\"fields\":[{\"name\":\"viewerCannotUpdateReasons\",\"description\":\"Reasons why the current viewer can not update this comment.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"CommentCannotUpdateReason\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"CommitComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"GistComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateBranchProtectionRuleInput\",\"description\":\"Autogenerated input type of UpdateBranchProtectionRule\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"branchProtectionRuleId\",\"description\":\"The global relay id of the branch protection rule to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"pattern\",\"description\":\"The glob-like pattern used to determine matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresApprovingReviews\",\"description\":\"Are approving reviews required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredApprovingReviewCount\",\"description\":\"Number of approving reviews required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresCommitSignatures\",\"description\":\"Are commits required to be signed.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresLinearHistory\",\"description\":\"Are merge commits prohibited from being pushed to this branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"blocksCreations\",\"description\":\"Is branch creation a protected operation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"allowsForcePushes\",\"description\":\"Are force pushes allowed on this branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"allowsDeletions\",\"description\":\"Can this branch be deleted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isAdminEnforced\",\"description\":\"Can admins override branch protection.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresStatusChecks\",\"description\":\"Are status checks required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresStrictStatusChecks\",\"description\":\"Are branches required to be up to date before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiresCodeOwnerReviews\",\"description\":\"Are reviews from code owners required to update matching branches.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"dismissesStaleReviews\",\"description\":\"Will new commits pushed to matching branches dismiss pull request review approvals.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"restrictsReviewDismissals\",\"description\":\"Is dismissal of pull request reviews restricted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"reviewDismissalActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to dismiss reviews on pull requests targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"bypassPullRequestActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to bypass pull requests targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"bypassForcePushActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to bypass force push targeting matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"restrictsPushes\",\"description\":\"Is pushing to matching branches restricted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pushActorIds\",\"description\":\"A list of User, Team, or App IDs allowed to push to matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiredStatusCheckContexts\",\"description\":\"List of required status check contexts that must pass for commits to be accepted to matching branches.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiredStatusChecks\",\"description\":\"The list of required status checks\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RequiredStatusCheckInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiresDeployments\",\"description\":\"Are successful deployments required before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requiredDeploymentEnvironments\",\"description\":\"The list of required deployment environments\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"requiresConversationResolution\",\"description\":\"Are conversations required to be resolved before merging.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"requireLastPushApproval\",\"description\":\"Whether the most recent push must be approved by someone other than the person who pushed it\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockBranch\",\"description\":\"Whether to set the branch as read-only. If this is true, users will not be able to push to the branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"lockAllowsFetchAndMerge\",\"description\":\"Whether users can pull changes from upstream when the branch is locked. Set to `true` to allow fork syncing. Set to `false` to prevent fork syncing.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateBranchProtectionRulePayload\",\"description\":\"Autogenerated return type of UpdateBranchProtectionRule.\",\"fields\":[{\"name\":\"branchProtectionRule\",\"description\":\"The newly created BranchProtectionRule.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"BranchProtectionRule\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateCheckRunInput\",\"description\":\"Autogenerated input type of UpdateCheckRun\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"checkRunId\",\"description\":\"The node of the check.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the check.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"detailsUrl\",\"description\":\"The URL of the integrator's site that has the full details of the check.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"externalId\",\"description\":\"A reference for the run on the integrator's system.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"status\",\"description\":\"The current status.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RequestableCheckStatusState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"startedAt\",\"description\":\"The time that the check run began.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"conclusion\",\"description\":\"The final conclusion of the check.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"CheckConclusionState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"completedAt\",\"description\":\"The time that the check run finished.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"output\",\"description\":\"Descriptive details about the run.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunOutput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"actions\",\"description\":\"Possible further actions the integrator can perform, which a user may trigger.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckRunAction\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateCheckRunPayload\",\"description\":\"Autogenerated return type of UpdateCheckRun.\",\"fields\":[{\"name\":\"checkRun\",\"description\":\"The updated check run.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CheckRun\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateCheckSuitePreferencesInput\",\"description\":\"Autogenerated input type of UpdateCheckSuitePreferences\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"autoTriggerPreferences\",\"description\":\"The check suite preferences to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"CheckSuiteAutoTriggerPreference\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateCheckSuitePreferencesPayload\",\"description\":\"Autogenerated return type of UpdateCheckSuitePreferences.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The updated repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateDiscussionCommentInput\",\"description\":\"Autogenerated input type of UpdateDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"commentId\",\"description\":\"The Node ID of the discussion comment to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The new contents of the comment body.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateDiscussionCommentPayload\",\"description\":\"Autogenerated return type of UpdateDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"comment\",\"description\":\"The modified discussion comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateDiscussionInput\",\"description\":\"Autogenerated input type of UpdateDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"discussionId\",\"description\":\"The Node ID of the discussion to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The new discussion title.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The new contents of the discussion body.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"categoryId\",\"description\":\"The Node ID of a discussion category within the same repository to change this discussion to.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateDiscussionPayload\",\"description\":\"Autogenerated return type of UpdateDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"discussion\",\"description\":\"The modified discussion.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseAdministratorRoleInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseAdministratorRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the Enterprise which the admin belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"login\",\"description\":\"The login of a administrator whose role is being changed.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"role\",\"description\":\"The new role for the Enterprise administrator.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAdministratorRole\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseAdministratorRolePayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseAdministratorRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of changing the administrator's role.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the allow private repository forking setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the allow private repository forking setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"policyValue\",\"description\":\"The value for the allow private repository forking policy on the enterprise.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseAllowPrivateRepositoryForkingPolicyValue\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated allow private repository forking setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the allow private repository forking setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseDefaultRepositoryPermissionSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseDefaultRepositoryPermissionSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the base repository permission setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the base repository permission setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseDefaultRepositoryPermissionSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseDefaultRepositoryPermissionSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseDefaultRepositoryPermissionSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated base repository permission setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the base repository permission setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseDeployKeySettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseDeployKeySetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the deploy key setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the deploy key setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseDeployKeySettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseDeployKeySetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated deploy key setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the deploy key setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can change repository visibility setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can change repository visibility setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can change repository visibility setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can change repository visibility setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanCreateRepositoriesSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanCreateRepositoriesSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can create repositories setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"Value for the members can create repositories setting on the enterprise. This or the granular public/private/internal allowed fields (but not both) must be provided.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanCreateRepositoriesSettingValue\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"membersCanCreateRepositoriesPolicyEnabled\",\"description\":\"When false, allow member organizations to set their own repository creation member privileges.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"membersCanCreatePublicRepositories\",\"description\":\"Allow members to create public repositories. Defaults to current value.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"membersCanCreatePrivateRepositories\",\"description\":\"Allow members to create private repositories. Defaults to current value.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"membersCanCreateInternalRepositories\",\"description\":\"Allow members to create internal repositories. Defaults to current value.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanCreateRepositoriesSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can create repositories setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can create repositories setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteIssuesSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanDeleteIssuesSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can delete issues setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can delete issues setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteIssuesSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanDeleteIssuesSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can delete issues setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can delete issues setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can delete repositories setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can delete repositories setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can delete repositories setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can delete repositories setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can invite collaborators setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can invite collaborators setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can invite collaborators setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can invite collaborators setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanMakePurchasesSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanMakePurchasesSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can make purchases setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can make purchases setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembersCanMakePurchasesSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanMakePurchasesSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanMakePurchasesSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can make purchases setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can make purchases setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can update protected branches setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can update protected branches setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can update protected branches setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can update protected branches setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the members can view dependency insights setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the members can view dependency insights setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated members can view dependency insights setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the members can view dependency insights setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseOrganizationProjectsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseOrganizationProjectsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the organization projects setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the organization projects setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseOrganizationProjectsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseOrganizationProjectsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated organization projects setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the organization projects setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseOwnerOrganizationRoleInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseOwnerOrganizationRole\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the Enterprise which the owner belongs to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization for membership change.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"organizationRole\",\"description\":\"The role to assume in the organization.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RoleInOrganization\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseOwnerOrganizationRolePayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseOwnerOrganizationRole.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of changing the owner's organization role.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseProfileInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseProfile\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The Enterprise ID to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the enterprise.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"The description of the enterprise.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"websiteUrl\",\"description\":\"The URL of the enterprise's website.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"location\",\"description\":\"The location of the enterprise.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"securityContactEmail\",\"description\":\"The security contact email address of the enterprise.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseProfilePayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseProfile.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The updated enterprise.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseRepositoryProjectsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseRepositoryProjectsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the repository projects setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the repository projects setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseRepositoryProjectsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseRepositoryProjectsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated repository projects setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the repository projects setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTeamDiscussionsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseTeamDiscussionsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the team discussions setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the team discussions setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledDisabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTeamDiscussionsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseTeamDiscussionsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated team discussions setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the team discussions setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the two-factor authentication disallowed methods setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the two-factor authentication disallowed methods setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseDisallowedMethodsSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseTwoFactorAuthenticationDisallowedMethodsSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated two-factor authentication disallowed methods setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the two-factor authentication disallowed methods setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput\",\"description\":\"Autogenerated input type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enterpriseId\",\"description\":\"The ID of the enterprise on which to set the two factor authentication required setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the two factor authentication required setting on the enterprise.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseEnabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload\",\"description\":\"Autogenerated return type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprise\",\"description\":\"The enterprise with the updated two factor authentication required setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the two factor authentication required setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateEnvironmentInput\",\"description\":\"Autogenerated input type of UpdateEnvironment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"environmentId\",\"description\":\"The node ID of the environment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"waitTimer\",\"description\":\"The wait timer in minutes.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"reviewers\",\"description\":\"The ids of users or teams that can approve deployments to this environment\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"preventSelfReview\",\"description\":\"Whether deployments to this environment can be approved by the user who created the deployment.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateEnvironmentPayload\",\"description\":\"Autogenerated return type of UpdateEnvironment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"environment\",\"description\":\"The updated environment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Environment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListEnabledSettingInput\",\"description\":\"Autogenerated input type of UpdateIpAllowListEnabledSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner on which to set the IP allow list enabled setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the IP allow list enabled setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListEnabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListEnabledSettingPayload\",\"description\":\"Autogenerated return type of UpdateIpAllowListEnabledSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The IP allow list owner on which the setting was updated.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IpAllowListOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListEntryInput\",\"description\":\"Autogenerated input type of UpdateIpAllowListEntry\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ipAllowListEntryId\",\"description\":\"The ID of the IP allow list entry to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"allowListValue\",\"description\":\"An IP address or range of addresses in CIDR notation.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"An optional name for the IP allow list entry.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isActive\",\"description\":\"Whether the IP allow list entry is active when an IP allow list is enabled.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListEntryPayload\",\"description\":\"Autogenerated return type of UpdateIpAllowListEntry.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ipAllowListEntry\",\"description\":\"The IP allow list entry that was updated.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IpAllowListEntry\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIpAllowListForInstalledAppsEnabledSettingInput\",\"description\":\"Autogenerated input type of UpdateIpAllowListForInstalledAppsEnabledSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the IP allow list configuration for installed GitHub Apps setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IpAllowListForInstalledAppsEnabledSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIpAllowListForInstalledAppsEnabledSettingPayload\",\"description\":\"Autogenerated return type of UpdateIpAllowListForInstalledAppsEnabledSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The IP allow list owner on which the setting was updated.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"IpAllowListOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueCommentInput\",\"description\":\"Autogenerated input type of UpdateIssueComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the IssueComment to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The updated text of the comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueCommentPayload\",\"description\":\"Autogenerated return type of UpdateIssueComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueComment\",\"description\":\"The updated comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueInput\",\"description\":\"Autogenerated input type of UpdateIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the Issue to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title for the issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body for the issue description.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"An array of Node IDs of users or bots for this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"milestoneId\",\"description\":\"The Node ID of the milestone for this issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelIds\",\"description\":\"An array of Node IDs of labels for this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"The desired issue state.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectIds\",\"description\":\"An array of Node IDs for projects associated with this issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"issueTypeId\",\"description\":\"The ID of the Issue Type for this issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueIssueTypeInput\",\"description\":\"Autogenerated input type of UpdateIssueIssueType\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueTypeId\",\"description\":\"The ID of the issue type to update on the issue\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueId\",\"description\":\"The ID of the issue to update\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueIssueTypePayload\",\"description\":\"Autogenerated return type of UpdateIssueIssueType.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The updated issue\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIssuePayload\",\"description\":\"Autogenerated return type of UpdateIssue.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issue\",\"description\":\"The issue.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateIssueTypeInput\",\"description\":\"Autogenerated input type of UpdateIssueType\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"issueTypeId\",\"description\":\"The ID of the issue type to update\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"isEnabled\",\"description\":\"Whether or not the issue type is enabled for the organization\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the issue type\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"The description of the issue type\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"color\",\"description\":\"Color for the issue type\",\"type\":{\"kind\":\"ENUM\",\"name\":\"IssueTypeColor\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateIssueTypePayload\",\"description\":\"Autogenerated return type of UpdateIssueType.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueType\",\"description\":\"The updated issue type\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"IssueType\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateLabelInput\",\"description\":\"Autogenerated input type of UpdateLabel\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the label to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"color\",\"description\":\"A 6 character hex code, without the leading #, identifying the updated color of the label.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A brief description of the label, such as its purpose.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The updated name of the label.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateLabelPayload\",\"description\":\"Autogenerated return type of UpdateLabel.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"label\",\"description\":\"The updated label.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Label\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateNotificationRestrictionSettingInput\",\"description\":\"Autogenerated input type of UpdateNotificationRestrictionSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownerId\",\"description\":\"The ID of the owner on which to set the restrict notifications setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"settingValue\",\"description\":\"The value for the restrict notifications setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"NotificationRestrictionSettingValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateNotificationRestrictionSettingPayload\",\"description\":\"Autogenerated return type of UpdateNotificationRestrictionSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The owner on which the setting was updated.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"VerifiableDomainOwner\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateOrganizationAllowPrivateRepositoryForkingSettingInput\",\"description\":\"Autogenerated input type of UpdateOrganizationAllowPrivateRepositoryForkingSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization on which to set the allow private repository forking setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"forkingEnabled\",\"description\":\"Enable forking of private repositories in the organization?\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload\",\"description\":\"Autogenerated return type of UpdateOrganizationAllowPrivateRepositoryForkingSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the allow private repository forking setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization with the updated allow private repository forking setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateOrganizationWebCommitSignoffSettingInput\",\"description\":\"Autogenerated input type of UpdateOrganizationWebCommitSignoffSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"organizationId\",\"description\":\"The ID of the organization on which to set the web commit signoff setting.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"webCommitSignoffRequired\",\"description\":\"Enable signoff on web-based commits for repositories in the organization?\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateOrganizationWebCommitSignoffSettingPayload\",\"description\":\"Autogenerated return type of UpdateOrganizationWebCommitSignoffSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the web commit signoff setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization with the updated web commit signoff setting.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateParameters\",\"description\":\"Only allow users with bypass permission to update matching refs.\",\"fields\":[{\"name\":\"updateAllowsFetchAndMerge\",\"description\":\"Branch can pull changes from its upstream repository\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateParametersInput\",\"description\":\"Only allow users with bypass permission to update matching refs.\",\"fields\":null,\"inputFields\":[{\"name\":\"updateAllowsFetchAndMerge\",\"description\":\"Branch can pull changes from its upstream repository\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePatreonSponsorabilityInput\",\"description\":\"Autogenerated input type of UpdatePatreonSponsorability\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the organization with the GitHub Sponsors profile, if any. Defaults to the GitHub Sponsors profile for the authenticated user if omitted.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enablePatreonSponsorships\",\"description\":\"Whether Patreon tiers should be shown on the GitHub Sponsors profile page, allowing potential sponsors to make their payment through Patreon instead of GitHub.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdatePatreonSponsorabilityPayload\",\"description\":\"Autogenerated return type of UpdatePatreonSponsorability.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors profile.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectCardInput\",\"description\":\"Autogenerated input type of UpdateProjectCard\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectCardId\",\"description\":\"The ProjectCard ID to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"isArchived\",\"description\":\"Whether or not the ProjectCard should be archived\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"note\",\"description\":\"The note of ProjectCard.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectCardPayload\",\"description\":\"Autogenerated return type of UpdateProjectCard.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectCard\",\"description\":\"The updated ProjectCard.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectCard\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectColumnInput\",\"description\":\"Autogenerated input type of UpdateProjectColumn\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectColumnId\",\"description\":\"The ProjectColumn ID to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of project column.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectColumnPayload\",\"description\":\"Autogenerated return type of UpdateProjectColumn.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectColumn\",\"description\":\"The updated project column.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectColumn\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectInput\",\"description\":\"Autogenerated input type of UpdateProject\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The Project ID to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The description of project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"Whether the project is open or closed.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"public\",\"description\":\"Whether the project is public or not.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectPayload\",\"description\":\"Autogenerated return type of UpdateProject.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"The updated project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2CollaboratorsInput\",\"description\":\"Autogenerated input type of UpdateProjectV2Collaborators\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the project to update the collaborators for.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"collaborators\",\"description\":\"The collaborators to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Collaborator\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2CollaboratorsPayload\",\"description\":\"Autogenerated return type of UpdateProjectV2Collaborators.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"collaborators\",\"description\":\"The collaborators granted a role\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ActorConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2DraftIssueInput\",\"description\":\"Autogenerated input type of UpdateProjectV2DraftIssue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"draftIssueId\",\"description\":\"The ID of the draft issue to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the draft issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the draft issue.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"The IDs of the assignees of the draft issue.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2DraftIssuePayload\",\"description\":\"Autogenerated return type of UpdateProjectV2DraftIssue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"draftIssue\",\"description\":\"The draft issue updated in the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"DraftIssue\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2FieldInput\",\"description\":\"Autogenerated input type of UpdateProjectV2Field\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"fieldId\",\"description\":\"The ID of the field to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name to update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"singleSelectOptions\",\"description\":\"Options for a field of type SINGLE_SELECT. Empty input is ignored, provided values overwrite existing options, and existing options should be fetched for partial updates.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2SingleSelectFieldOptionInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"iterationConfiguration\",\"description\":\"Configuration for a field of type ITERATION. Empty input is ignored, provided values overwrite the existing configuration, and existing configuration should be fetched for partial updates.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2IterationFieldConfigurationInput\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2FieldPayload\",\"description\":\"Autogenerated return type of UpdateProjectV2Field.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Field\",\"description\":\"The updated field.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"ProjectV2FieldConfiguration\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2Input\",\"description\":\"Autogenerated input type of UpdateProjectV2\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"Set the title of the project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"shortDescription\",\"description\":\"Set the short description of the project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"readme\",\"description\":\"Set the readme description of the project.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"closed\",\"description\":\"Set the project to closed or open.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"public\",\"description\":\"Set the project to public or private.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2ItemFieldValueInput\",\"description\":\"Autogenerated input type of UpdateProjectV2ItemFieldValue\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the item to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"fieldId\",\"description\":\"The ID of the field to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"value\",\"description\":\"The value which will be set on the field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2FieldValue\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2ItemFieldValuePayload\",\"description\":\"Autogenerated return type of UpdateProjectV2ItemFieldValue.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2Item\",\"description\":\"The updated item.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Item\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2ItemPositionInput\",\"description\":\"Autogenerated input type of UpdateProjectV2ItemPosition\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"projectId\",\"description\":\"The ID of the Project.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The ID of the item to be moved.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"afterId\",\"description\":\"The ID of the item to position this item after. If omitted or set to null the item will be moved to top.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2ItemPositionPayload\",\"description\":\"Autogenerated return type of UpdateProjectV2ItemPosition.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"items\",\"description\":\"The items in the new order\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2ItemConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2Payload\",\"description\":\"Autogenerated return type of UpdateProjectV2.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectV2\",\"description\":\"The updated Project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateProjectV2StatusUpdateInput\",\"description\":\"Autogenerated input type of UpdateProjectV2StatusUpdate\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"statusUpdateId\",\"description\":\"The ID of the status update to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"startDate\",\"description\":\"The start date of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"targetDate\",\"description\":\"The target date of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Date\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"status\",\"description\":\"The status of the status update.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2StatusUpdateStatus\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The body of the status update.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateProjectV2StatusUpdatePayload\",\"description\":\"Autogenerated return type of UpdateProjectV2StatusUpdate.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"statusUpdate\",\"description\":\"The status update updated in the project.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2StatusUpdate\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestBranchInput\",\"description\":\"Autogenerated input type of UpdatePullRequestBranch\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"expectedHeadOid\",\"description\":\"The head ref oid for the upstream branch.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"updateMethod\",\"description\":\"The update branch method to use. If omitted, defaults to 'MERGE'\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestBranchUpdateMethod\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestBranchPayload\",\"description\":\"Autogenerated return type of UpdatePullRequestBranch.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The updated pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestInput\",\"description\":\"Autogenerated input type of UpdatePullRequest\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestId\",\"description\":\"The Node ID of the pull request.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The name of the branch you want your changes pulled into. This should be an existing branch\\non the current repository.\\n\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The title of the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"The target state of the pull request.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PullRequestUpdateState\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maintainerCanModify\",\"description\":\"Indicates whether maintainers can modify the pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"assigneeIds\",\"description\":\"An array of Node IDs of users for this pull request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"milestoneId\",\"description\":\"The Node ID of the milestone for this pull request.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labelIds\",\"description\":\"An array of Node IDs of labels for this pull request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"projectIds\",\"description\":\"An array of Node IDs for projects associated with this pull request.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestPayload\",\"description\":\"Autogenerated return type of UpdatePullRequest.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequest\",\"description\":\"The updated pull request.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequest\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestReviewCommentInput\",\"description\":\"Autogenerated input type of UpdatePullRequestReviewComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewCommentId\",\"description\":\"The Node ID of the comment to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The text of the comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestReviewCommentPayload\",\"description\":\"Autogenerated return type of UpdatePullRequestReviewComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReviewComment\",\"description\":\"The updated comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReviewComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdatePullRequestReviewInput\",\"description\":\"Autogenerated input type of UpdatePullRequestReview\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pullRequestReviewId\",\"description\":\"The Node ID of the pull request review to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The contents of the pull request review body.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdatePullRequestReviewPayload\",\"description\":\"Autogenerated return type of UpdatePullRequestReview.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequestReview\",\"description\":\"The updated pull request review.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestReview\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRefInput\",\"description\":\"Autogenerated input type of UpdateRef\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"refId\",\"description\":\"The Node ID of the Ref to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"oid\",\"description\":\"The GitObjectID that the Ref shall be updated to target.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"GitObjectID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"force\",\"description\":\"Permit updates of branch Refs that are not fast-forwards?\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateRefPayload\",\"description\":\"Autogenerated return type of UpdateRef.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The updated Ref.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Ref\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRefsInput\",\"description\":\"Autogenerated input type of UpdateRefs\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"refUpdates\",\"description\":\"A list of ref updates.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RefUpdate\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateRefsPayload\",\"description\":\"Autogenerated return type of UpdateRefs.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryInput\",\"description\":\"Autogenerated input type of UpdateRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The new name of the repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A new description for the repository. Pass an empty string to erase the existing description.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"template\",\"description\":\"Whether this repository should be marked as a template such that anyone who can access it can create new repositories with the same files and directory structure.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"homepageUrl\",\"description\":\"The URL for a web page about this repository. Pass an empty string to erase the existing URL.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasWikiEnabled\",\"description\":\"Indicates if the repository should have the wiki feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"Indicates if the repository should have the issues feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasProjectsEnabled\",\"description\":\"Indicates if the repository should have the project boards feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasDiscussionsEnabled\",\"description\":\"Indicates if the repository should have the discussions feature enabled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasSponsorshipsEnabled\",\"description\":\"Indicates if the repository displays a Sponsor button for financial contributions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryPayload\",\"description\":\"Autogenerated return type of UpdateRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The updated repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryRulesetInput\",\"description\":\"Autogenerated input type of UpdateRepositoryRuleset\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryRulesetId\",\"description\":\"The global relay id of the repository ruleset to be updated.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the ruleset.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"target\",\"description\":\"The target of the ruleset.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryRulesetTarget\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"rules\",\"description\":\"The list of rules for this ruleset\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleInput\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"conditions\",\"description\":\"The list of conditions for this ruleset\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRuleConditionsInput\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"enforcement\",\"description\":\"The enforcement level for this ruleset\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RuleEnforcement\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"bypassActors\",\"description\":\"A list of actors that are allowed to bypass rules in this ruleset.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryRulesetBypassActorInput\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryRulesetPayload\",\"description\":\"Autogenerated return type of UpdateRepositoryRuleset.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ruleset\",\"description\":\"The newly created Ruleset.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryRuleset\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateRepositoryWebCommitSignoffSettingInput\",\"description\":\"Autogenerated input type of UpdateRepositoryWebCommitSignoffSetting\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"webCommitSignoffRequired\",\"description\":\"Indicates if the repository should require signoff on web-based commits.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateRepositoryWebCommitSignoffSettingPayload\",\"description\":\"Autogenerated return type of UpdateRepositoryWebCommitSignoffSetting.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A message confirming the result of updating the web commit signoff setting.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The updated repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateSponsorshipPreferencesInput\",\"description\":\"Autogenerated input type of UpdateSponsorshipPreferences\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorId\",\"description\":\"The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorLogin\",\"description\":\"The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableId\",\"description\":\"The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogin\",\"description\":\"The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"receiveEmails\",\"description\":\"Whether the sponsor should receive email updates from the sponsorable.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"privacyLevel\",\"description\":\"Specify whether others should be able to see that the sponsor is sponsoring the sponsorable. Public visibility still does not reveal which tier is used.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorshipPrivacy\",\"ofType\":null},\"defaultValue\":\"PUBLIC\"}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateSponsorshipPreferencesPayload\",\"description\":\"Autogenerated return type of UpdateSponsorshipPreferences.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorship\",\"description\":\"The sponsorship that was updated.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateSubscriptionInput\",\"description\":\"Autogenerated input type of UpdateSubscription\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"subscribableId\",\"description\":\"The Node ID of the subscribable object to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"state\",\"description\":\"The new state of the subscription.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SubscriptionState\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateSubscriptionPayload\",\"description\":\"Autogenerated return type of UpdateSubscription.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subscribable\",\"description\":\"The input subscribable entity.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Subscribable\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamDiscussionCommentInput\",\"description\":\"Autogenerated input type of UpdateTeamDiscussionComment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the comment to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The updated text of the comment.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"bodyVersion\",\"description\":\"The current version of the body content.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamDiscussionCommentPayload\",\"description\":\"Autogenerated return type of UpdateTeamDiscussionComment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussionComment\",\"description\":\"The updated comment.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussionComment\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamDiscussionInput\",\"description\":\"Autogenerated input type of UpdateTeamDiscussion\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the discussion to modify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"title\",\"description\":\"The updated title of the discussion.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"body\",\"description\":\"The updated text of the discussion.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"bodyVersion\",\"description\":\"The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"pinned\",\"description\":\"If provided, sets the pinned state of the updated discussion.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamDiscussionPayload\",\"description\":\"Autogenerated return type of UpdateTeamDiscussion.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teamDiscussion\",\"description\":\"The updated discussion.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"TeamDiscussion\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamReviewAssignmentInput\",\"description\":\"Autogenerated input type of UpdateTeamReviewAssignment\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The Node ID of the team to update review assignments of\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"enabled\",\"description\":\"Turn on or off review assignment\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"algorithm\",\"description\":\"The algorithm to use for review assignment\",\"type\":{\"kind\":\"ENUM\",\"name\":\"TeamReviewAssignmentAlgorithm\",\"ofType\":null},\"defaultValue\":\"ROUND_ROBIN\"},{\"name\":\"teamMemberCount\",\"description\":\"The number of team members to assign\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":\"1\"},{\"name\":\"notifyTeam\",\"description\":\"Notify the entire team of the PR if it is delegated\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"removeTeamRequest\",\"description\":\"Remove the team review request when assigning\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"includeChildTeamMembers\",\"description\":\"Include the members of any child teams when assigning\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"countMembersAlreadyRequested\",\"description\":\"Count any members whose review has already been requested against the required number of members assigned to review\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"},{\"name\":\"excludedTeamMemberIds\",\"description\":\"An array of team member IDs to exclude\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamReviewAssignmentPayload\",\"description\":\"Autogenerated return type of UpdateTeamReviewAssignment.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"team\",\"description\":\"The team that was modified\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTeamsRepositoryInput\",\"description\":\"Autogenerated input type of UpdateTeamsRepository\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Repository ID being granted access to.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"teamIds\",\"description\":\"A list of teams being granted access. Limit: 10\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"permission\",\"description\":\"Permission that should be granted to the teams.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPermission\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateTeamsRepositoryPayload\",\"description\":\"Autogenerated return type of UpdateTeamsRepository.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The repository that was updated.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"teams\",\"description\":\"The teams granted permission on the repository.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Team\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateTopicsInput\",\"description\":\"Autogenerated input type of UpdateTopics\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The Node ID of the repository.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"topicNames\",\"description\":\"An array of topic names.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateTopicsPayload\",\"description\":\"Autogenerated return type of UpdateTopics.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"invalidTopicNames\",\"description\":\"Names of the provided topics that are not valid.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"The updated repository.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateUserListInput\",\"description\":\"Autogenerated input type of UpdateUserList\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"listId\",\"description\":\"The ID of the list to update.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"name\",\"description\":\"The name of the list\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"description\",\"description\":\"A description of the list\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isPrivate\",\"description\":\"Whether or not the list is private\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateUserListPayload\",\"description\":\"Autogenerated return type of UpdateUserList.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"list\",\"description\":\"The list that was just updated\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UpdateUserListsForItemInput\",\"description\":\"Autogenerated input type of UpdateUserListsForItem\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"itemId\",\"description\":\"The item to add to the list\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"listIds\",\"description\":\"The lists to which this item should belong\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}}},\"defaultValue\":null},{\"name\":\"suggestedListIds\",\"description\":\"The suggested lists to create and add this item to\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UpdateUserListsForItemPayload\",\"description\":\"Autogenerated return type of UpdateUserListsForItem.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"item\",\"description\":\"The item that was added\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"UserListItems\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lists\",\"description\":\"The lists to which this item belongs\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who owns the lists\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"User\",\"description\":\"A user is an individual's account on GitHub that owns repositories and can make new content.\",\"fields\":[{\"name\":\"anyPinnableItems\",\"description\":\"Determine if this repository owner has any items that can be pinned to their profile.\",\"args\":[{\"name\":\"type\",\"description\":\"Filter to only a particular kind of pinnable item.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"avatarUrl\",\"description\":\"A URL pointing to the user's public avatar.\",\"args\":[{\"name\":\"size\",\"description\":\"The size of the resulting square image.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bio\",\"description\":\"The user's public profile bio.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"bioHTML\",\"description\":\"The user's public profile bio as HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"canReceiveOrganizationEmailsWhenNotificationsRestricted\",\"description\":\"Could this user receive email notifications, if the organization had notification restrictions enabled?\",\"args\":[{\"name\":\"login\",\"description\":\"The login of the organization to check.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"commitComments\",\"description\":\"A list of commit comments made by this user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CommitCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"company\",\"description\":\"The user's public profile company.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"companyHTML\",\"description\":\"The user's public profile company as HTML.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"contributionsCollection\",\"description\":\"The collection of contributions this user has made to different repositories.\",\"args\":[{\"name\":\"organizationID\",\"description\":\"The ID of the organization used to filter contributions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"from\",\"description\":\"Only contributions made at this time or later will be counted. If omitted, defaults to a year ago.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"to\",\"description\":\"Only contributions made before and up to (including) this time will be counted. If omitted, defaults to the current time or one year from the provided from argument.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ContributionsCollection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"copilotEndpoints\",\"description\":\"The user's Copilot endpoint information\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"CopilotEndpoints\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"email\",\"description\":\"The user's publicly visible profile email.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enterprises\",\"description\":\"A list of enterprises that the user belongs to.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the User's enterprises.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"EnterpriseOrder\",\"ofType\":null},\"defaultValue\":\"{field: NAME, direction: ASC}\"},{\"name\":\"membershipType\",\"description\":\"Filter enterprises returned based on the user's membership type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"EnterpriseMembershipType\",\"ofType\":null},\"defaultValue\":\"ALL\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"EnterpriseConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"estimatedNextSponsorsPayoutInCents\",\"description\":\"The estimated next GitHub Sponsors payout for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"followers\",\"description\":\"A list of users the given user is followed by.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"FollowerConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"following\",\"description\":\"A list of users the given user is following.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"FollowingConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gist\",\"description\":\"Find gist by repo name.\",\"args\":[{\"name\":\"name\",\"description\":\"The gist name to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Gist\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gistComments\",\"description\":\"A list of gist comments made by this user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"gists\",\"description\":\"A list of the Gists the user has created.\",\"args\":[{\"name\":\"privacy\",\"description\":\"Filters Gists according to privacy.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"GistPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for gists returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"GistOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"GistConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasSponsorsListing\",\"description\":\"True if this user/organization has a GitHub Sponsors listing.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hovercard\",\"description\":\"The hovercard information for this user in a given context\",\"args\":[{\"name\":\"primarySubjectId\",\"description\":\"The ID of the subject to get the hovercard in the context of\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Hovercard\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the User object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"interactionAbility\",\"description\":\"The interaction ability settings for this user.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryInteractionAbility\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isBountyHunter\",\"description\":\"Whether or not this user is a participant in the GitHub Security Bug Bounty.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isCampusExpert\",\"description\":\"Whether or not this user is a participant in the GitHub Campus Experts Program.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDeveloperProgramMember\",\"description\":\"Whether or not this user is a GitHub Developer Program member.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isEmployee\",\"description\":\"Whether or not this user is a GitHub employee.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isFollowingViewer\",\"description\":\"Whether or not this user is following the viewer. Inverse of viewerIsFollowing\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isGitHubStar\",\"description\":\"Whether or not this user is a member of the GitHub Stars Program.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isHireable\",\"description\":\"Whether or not the user has marked themselves as for hire.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSiteAdmin\",\"description\":\"Whether or not this user is a site administrator.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoredBy\",\"description\":\"Whether the given account is sponsoring this user/organization.\",\"args\":[{\"name\":\"accountLogin\",\"description\":\"The target account's login.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isSponsoringViewer\",\"description\":\"True if the viewer is sponsored by this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isViewer\",\"description\":\"Whether or not this user is the viewing user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issueComments\",\"description\":\"A list of issue comments made by this user.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issue comments returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueCommentOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"issues\",\"description\":\"A list of issues associated with this user.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the issues by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"IssueState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for issues returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"IssueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"itemShowcase\",\"description\":\"Showcases a selection of repositories and gists that the profile owner has either curated or that have been selected automatically based on popularity.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProfileItemShowcase\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lifetimeReceivedSponsorshipValues\",\"description\":\"Calculate how much each sponsor has ever paid total to this maintainer via GitHub Sponsors. Does not include sponsorships paid via Patreon.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for results returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorAndLifetimeValueOrder\",\"ofType\":null},\"defaultValue\":\"{field: SPONSOR_LOGIN, direction: ASC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorAndLifetimeValueConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lists\",\"description\":\"A user-curated list of repositories\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserListConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"location\",\"description\":\"The user's public profile location.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"login\",\"description\":\"The username used to login.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"monthlyEstimatedSponsorsIncomeInCents\",\"description\":\"The estimated monthly GitHub Sponsors income for this user/organization in cents (USD).\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The user's public profile name.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"notificationThreads\",\"description\":\"A list of notification threads for the viewer. Returns an empty list for a user other than\\nthe current viewer.\\n\\nCombining both filterBy and query arguments will result in an error.\\nPlease favor using the query argument.\\n\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"filterBy\",\"description\":\"Filtering options for notifications. Will soon be deprecated.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"NotificationThreadFilters\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"query\",\"description\":\"The search string to look for. If no is:read, is:unread, or is:done qualifiers are included in the query, results will include read and unread notification threads by default.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"NotificationThreadConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"Find an organization by its login that the user belongs to.\",\"args\":[{\"name\":\"login\",\"description\":\"The login of the organization to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizationVerifiedDomainEmails\",\"description\":\"Verified email addresses that match verified domains for a specified organization the user is a member of.\",\"args\":[{\"name\":\"login\",\"description\":\"The login of the organization to match verified domains from.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organizations\",\"description\":\"A list of organizations the user belongs to.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for the User's organizations.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"OrganizationOrder\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"OrganizationConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"packages\",\"description\":\"A list of packages under the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"names\",\"description\":\"Find packages by their names.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Find packages in a repository by ID.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"packageType\",\"description\":\"Filter registry package by type.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"PackageType\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering of the returned packages.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"PackageOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PackageConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnableItems\",\"description\":\"A list of repositories and gists this profile owner can pin to their profile.\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinnable items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItems\",\"description\":\"A list of repositories and gists this profile owner has pinned to their profile\",\"args\":[{\"name\":\"types\",\"description\":\"Filter the types of pinned items that are returned.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PinnableItemType\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PinnableItemConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pinnedItemsRemaining\",\"description\":\"Returns how many more items this profile owner can pin to their profile.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"project\",\"description\":\"Find project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Project\",\"ofType\":null},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectV2\",\"description\":\"Find a project by number.\",\"args\":[{\"name\":\"number\",\"description\":\"The project number.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projects\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"orderBy\",\"description\":\"Ordering options for projects returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"search\",\"description\":\"Query to search projects by, currently only searching by name.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"states\",\"description\":\"A list of states to filter the projects by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"ProjectState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectConnection\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"projectsResourcePath\",\"description\":\"The HTTP path listing user's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsUrl\",\"description\":\"The HTTP URL listing user's projects\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"projectsV2\",\"description\":\"A list of projects under the owner.\",\"args\":[{\"name\":\"query\",\"description\":\"A project to search for under the owner.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"How to order the returned projects.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"ProjectV2Order\",\"ofType\":null},\"defaultValue\":\"{field: NUMBER, direction: DESC}\"},{\"name\":\"minPermissionLevel\",\"description\":\"Filter projects based on user role.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"ProjectV2PermissionLevel\",\"ofType\":null},\"defaultValue\":\"READ\"},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pronouns\",\"description\":\"The user's profile pronouns\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"publicKeys\",\"description\":\"A list of public keys associated with this user.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PublicKeyConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pullRequests\",\"description\":\"A list of pull requests associated with this user.\",\"args\":[{\"name\":\"states\",\"description\":\"A list of states to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"PullRequestState\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"labels\",\"description\":\"A list of label names to filter the pull requests by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"headRefName\",\"description\":\"The head ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"baseRefName\",\"description\":\"The base ref name to filter the pull requests by.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for pull requests returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"IssueOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PullRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"recentProjects\",\"description\":\"Recent projects that this user has modified in the context of the owner.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"ProjectV2Connection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositories\",\"description\":\"A list of repositories that the user owns.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isArchived\",\"description\":\"If non-null, filters repositories according to whether they are archived and not maintained\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isFork\",\"description\":\"If non-null, filters repositories according to whether they are forks of another repository\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoriesContributedTo\",\"description\":\"A list of repositories that the user recently contributed to.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssues\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includeUserRepositories\",\"description\":\"If true, include user repositories\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"contributionTypes\",\"description\":\"If non-null, include only the specified types of contributions. The GitHub.com UI uses [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryContributionType\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repository\",\"description\":\"Find Repository.\",\"args\":[{\"name\":\"name\",\"description\":\"Name of Repository to find.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"followRenames\",\"description\":\"Follow repository renames. If disabled, a repository referenced by its old name will return an error.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDiscussionComments\",\"description\":\"Discussion comments this user has authored.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"Filter discussion comments to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"onlyAnswers\",\"description\":\"Filter discussion comments to only those that were marked as the answer\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionCommentConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryDiscussions\",\"description\":\"Discussions this user has started.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for discussions returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"DiscussionOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"},{\"name\":\"repositoryId\",\"description\":\"Filter discussions to only those in a specific repository.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"answered\",\"description\":\"Filter discussions to only those that have been answered or not. Defaults to including both answered and unanswered discussions.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"null\"},{\"name\":\"states\",\"description\":\"A list of states to filter the discussions by.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"DiscussionState\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DiscussionConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"savedReplies\",\"description\":\"Replies this user has saved\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"The field to order saved replies by.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SavedReplyOrder\",\"ofType\":null},\"defaultValue\":\"{field: UPDATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SavedReplyConnection\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"socialAccounts\",\"description\":\"The user's social media accounts, ordered as they appear on the user's profile.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SocialAccountConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsoring\",\"description\":\"List of users and organizations this entity is sponsoring.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the users and organizations returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsors\",\"description\":\"List of sponsors for this user or organization.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"tierId\",\"description\":\"If given, will filter for sponsors at the given tier. Will only return sponsors whose tier the viewer is permitted to see.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsors returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorOrder\",\"ofType\":null},\"defaultValue\":\"{field: RELEVANCE, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsActivities\",\"description\":\"Events involving this sponsorable, such as new sponsorships.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"period\",\"description\":\"Filter activities returned to only those that occurred in the most recent specified time period. Set to ALL to avoid filtering by when the activity occurred. Will be ignored if `since` or `until` is given.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityPeriod\",\"ofType\":null},\"defaultValue\":\"MONTH\"},{\"name\":\"since\",\"description\":\"Filter activities to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter activities to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for activity returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorsActivityOrder\",\"ofType\":null},\"defaultValue\":\"{field: TIMESTAMP, direction: DESC}\"},{\"name\":\"actions\",\"description\":\"Filter activities to only the specified actions.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"SponsorsActivityAction\",\"ofType\":null}}},\"defaultValue\":\"[]\"},{\"name\":\"includeAsSponsor\",\"description\":\"Whether to include those events where this sponsorable acted as the sponsor. Defaults to only including events where this sponsorable was the recipient of a sponsorship.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private activities in the result set. Defaults to including public and private activities.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsActivityConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorsListing\",\"description\":\"The GitHub Sponsors listing for this user or organization.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"SponsorsListing\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsor\",\"description\":\"The sponsorship from the viewer to this user/organization; that is, the sponsorship where you're the sponsor.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the viewer's sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipForViewerAsSponsorable\",\"description\":\"The sponsorship from this user/organization to the viewer; that is, the sponsorship you're receiving.\",\"args\":[{\"name\":\"activeOnly\",\"description\":\"Whether to return the sponsorship only if it's still active. Pass false to get the sponsorship back even if it has been cancelled.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Sponsorship\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipNewsletters\",\"description\":\"List of sponsorship updates sent from this sponsorable to sponsors.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorship updates returned from the connection.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipNewsletterOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipNewsletterConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsMaintainer\",\"description\":\"The sponsorships where this user or organization is the maintainer receiving the funds.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"includePrivate\",\"description\":\"Whether or not to include private sponsorships in the result set\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this maintainer has ever received.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sponsorshipsAsSponsor\",\"description\":\"The sponsorships where this user or organization is the funder.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"SponsorshipOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"maintainerLogins\",\"description\":\"Filter sponsorships returned to those for the specified maintainers. That is, the recipient of the sponsorship is a user or organization with one of the given logins.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":null},{\"name\":\"activeOnly\",\"description\":\"Whether to include only sponsorships that are active right now, versus all sponsorships this sponsor has ever made.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"true\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"SponsorshipConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"starredRepositories\",\"description\":\"Repositories the user has starred.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"ownedByViewer\",\"description\":\"Filters starred repositories to only return repositories owned by the viewer.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Order for connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"StarOrder\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"StarredRepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"status\",\"description\":\"The user's description of what they're currently doing.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"suggestedListNames\",\"description\":\"Suggested names for user lists\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserListSuggestion\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"topRepositories\",\"description\":\"Repositories the user has contributed to, ordered by contribution rank, plus repositories the user has created\\n\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"since\",\"description\":\"How far back in time to fetch contributed repositories\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalSponsorshipAmountAsSponsorInCents\",\"description\":\"The amount in United States cents (e.g., 500 = $5.00 USD) that this entity has spent on GitHub to fund sponsorships. Only returns a value when viewed by the user themselves or by a user who can manage sponsorships for the requested organization.\",\"args\":[{\"name\":\"since\",\"description\":\"Filter payments to those that occurred on or after this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"until\",\"description\":\"Filter payments to those that occurred before this time.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"sponsorableLogins\",\"description\":\"Filter payments to those made to the users or organizations with the specified usernames.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}}},\"defaultValue\":\"[]\"}],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"twitterUsername\",\"description\":\"The user's Twitter username.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"userViewType\",\"description\":\"Whether the request returns publicly visible information or privately visible information about the user\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"UserViewType\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanChangePinnedItems\",\"description\":\"Can the viewer pin repositories and gists to the profile?\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanCreateProjects\",\"description\":\"Can the current viewer create new projects on this owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Projects (classic) is being deprecated in favor of the new Projects experience, see: https://github.blog/changelog/2024-05-23-sunset-notice-projects-classic/. Removal on 2025-04-01 UTC.\"},{\"name\":\"viewerCanFollow\",\"description\":\"Whether or not the viewer is able to follow the user.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanSponsor\",\"description\":\"Whether or not the viewer is able to sponsor this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCopilotAgentCreatesChannel\",\"description\":\"Channel value for subscribing to live updates for session creations.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCopilotAgentLogUpdatesChannel\",\"description\":\"Channel value for subscribing to live updates for session log updates.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCopilotAgentUpdatesChannel\",\"description\":\"Channel value for subscribing to live updates for session updates.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsFollowing\",\"description\":\"Whether or not this user is followed by the viewer. Inverse of isFollowingViewer.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerIsSponsoring\",\"description\":\"True if the viewer is sponsoring this user/organization.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"watching\",\"description\":\"A list of repositories the given user is watching.\",\"args\":[{\"name\":\"privacy\",\"description\":\"If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryPrivacy\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"visibility\",\"description\":\"If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.\",\"type\":{\"kind\":\"ENUM\",\"name\":\"RepositoryVisibility\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for repositories returned from the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"RepositoryOrder\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"affiliations\",\"description\":\"Affiliation options for repositories returned from the connection. If none specified, the results will include repositories for which the current viewer is an owner or collaborator, or member.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ownerAffiliations\",\"description\":\"Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.\",\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"RepositoryAffiliation\",\"ofType\":null}},\"defaultValue\":\"[OWNER, COLLABORATOR]\"},{\"name\":\"isLocked\",\"description\":\"If non-null, filters repositories according to whether they have been locked\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"hasIssuesEnabled\",\"description\":\"If non-null, filters repositories according to whether they have issues enabled\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"RepositoryConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"websiteUrl\",\"description\":\"A URL pointing to the user's public website/blog.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Agentic\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"PackageOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProfileOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Owner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"ProjectV2Recent\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionAuthor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryDiscussionCommentAuthor\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"Sponsorable\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"UserBlockDuration\",\"description\":\"The possible durations that a user can be blocked for.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ONE_DAY\",\"description\":\"The user was blocked for 1 day\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"THREE_DAYS\",\"description\":\"The user was blocked for 3 days\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ONE_WEEK\",\"description\":\"The user was blocked for 7 days\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ONE_MONTH\",\"description\":\"The user was blocked for 30 days\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PERMANENT\",\"description\":\"The user was blocked permanently\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserBlockedEvent\",\"description\":\"Represents a 'user_blocked' event on a given user.\",\"fields\":[{\"name\":\"actor\",\"description\":\"Identifies the actor who performed the event.\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"blockDuration\",\"description\":\"Number of days that the user was blocked for.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"UserBlockDuration\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UserBlockedEvent object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subject\",\"description\":\"The user who was blocked.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserConnection\",\"description\":\"A list of users.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserContentEdit\",\"description\":\"An edit on user content\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedAt\",\"description\":\"Identifies the date and time when the object was deleted.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deletedBy\",\"description\":\"The actor who deleted this content\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"diff\",\"description\":\"A summary of the changes for this edit\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editedAt\",\"description\":\"When this content was edited\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"editor\",\"description\":\"The actor who edited this content\",\"args\":[],\"type\":{\"kind\":\"INTERFACE\",\"name\":\"Actor\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UserContentEdit object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserContentEditConnection\",\"description\":\"A list of edits to content.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEditEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEdit\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserContentEditEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserContentEdit\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserEdge\",\"description\":\"Represents a user.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserEmailMetadata\",\"description\":\"Email attributes from External Identity\",\"fields\":[{\"name\":\"primary\",\"description\":\"Boolean to identify primary emails\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":\"Type of email\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"value\",\"description\":\"Email id\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"description\":\"A user-curated list of repositories\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":\"The description of this list\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UserList object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isPrivate\",\"description\":\"Whether or not this list is private\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"items\",\"description\":\"The items associated with this list\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserListItemsConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"lastAddedAt\",\"description\":\"The date and time at which this list was created or last had items added to it\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of this list\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"slug\",\"description\":\"The slug of this list\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user to which this list belongs\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserListConnection\",\"description\":\"The connection type for UserList.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserListEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserListEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserList\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"UserListItems\",\"description\":\"Types that can be added to a user list.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Repository\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"UserListItemsConnection\",\"description\":\"The connection type for UserListItems.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserListItemsEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"UserListItems\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserListItemsEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"UNION\",\"name\":\"UserListItems\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserListSuggestion\",\"description\":\"Represents a suggested user list.\",\"fields\":[{\"name\":\"id\",\"description\":\"The ID of the suggested user list\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the suggested user list\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepository\",\"description\":\"A repository owned by an Enterprise Managed user.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the UserNamespaceRepository object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nameWithOwner\",\"description\":\"The repository's name with owner.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The user owner of the repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INTERFACE\",\"name\":\"RepositoryOwner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepositoryConnection\",\"description\":\"A list of repositories owned by users in an enterprise with Enterprise Managed Users.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepositoryEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepository\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepositoryEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserNamespaceRepository\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"description\":\"The user's description of what they're currently doing.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emoji\",\"description\":\"An emoji summarizing the user's status.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"emojiHTML\",\"description\":\"The status emoji as HTML.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"HTML\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"expiresAt\",\"description\":\"If set, the status will not be shown after this date.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the UserStatus object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"indicatesLimitedAvailability\",\"description\":\"Whether this status indicates the user is not fully available on GitHub.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"message\",\"description\":\"A brief message describing what the user is doing.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"organization\",\"description\":\"The organization whose members can see this status. If null, this status is publicly visible.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"user\",\"description\":\"The user who has this status.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserStatusConnection\",\"description\":\"The connection type for UserStatus.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserStatusEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"UserStatusEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"UserStatus\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"UserStatusOrder\",\"description\":\"Ordering options for user status connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order user statuses by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"UserStatusOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"UserStatusOrderField\",\"description\":\"Properties by which user status connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"UPDATED_AT\",\"description\":\"Order user statuses by when they were updated.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"UserViewType\",\"description\":\"Whether a user being viewed contains public or private information.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"PUBLIC\",\"description\":\"A user that is publicly visible.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"PRIVATE\",\"description\":\"A user containing information only visible to the authenticated user.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"description\":\"A domain that can be verified or approved for an organization or an enterprise.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"dnsHostName\",\"description\":\"The DNS host name that should be used for verification.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domain\",\"description\":\"The unicode encoded domain.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasFoundHostName\",\"description\":\"Whether a TXT record for verification with the expected host name was found.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"hasFoundVerificationToken\",\"description\":\"Whether a TXT record for verification with the expected verification token was found.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the VerifiableDomain object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isApproved\",\"description\":\"Whether or not the domain is approved.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRequiredForPolicyEnforcement\",\"description\":\"Whether this domain is required to exist for an organization or enterprise policy to be enforced.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isVerified\",\"description\":\"Whether or not the domain is verified.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"owner\",\"description\":\"The owner of the domain.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"UNION\",\"name\":\"VerifiableDomainOwner\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"punycodeEncodedDomain\",\"description\":\"The punycode encoded domain.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"tokenExpirationTime\",\"description\":\"The time that the current verification token will expire.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"verificationToken\",\"description\":\"The current verification token for the domain.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomainConnection\",\"description\":\"The connection type for VerifiableDomain.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomainEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomainEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"VerifiableDomainOrder\",\"description\":\"Ordering options for verifiable domain connections.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field to order verifiable domains by.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"VerifiableDomainOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The ordering direction.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"VerifiableDomainOrderField\",\"description\":\"Properties by which verifiable domain connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"DOMAIN\",\"description\":\"Order verifiable domains by the domain name.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"CREATED_AT\",\"description\":\"Order verifiable domains by their creation date.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"VerifiableDomainOwner\",\"description\":\"Types that can own a verifiable domain.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Enterprise\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"Organization\",\"ofType\":null}]},{\"kind\":\"INPUT_OBJECT\",\"name\":\"VerifyVerifiableDomainInput\",\"description\":\"Autogenerated input type of VerifyVerifiableDomain\",\"fields\":null,\"inputFields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"id\",\"description\":\"The ID of the verifiable domain to verify.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"VerifyVerifiableDomainPayload\",\"description\":\"Autogenerated return type of VerifyVerifiableDomain.\",\"fields\":[{\"name\":\"clientMutationId\",\"description\":\"A unique identifier for the client performing the mutation.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"domain\",\"description\":\"The verifiable domain that was verified.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"VerifiableDomain\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"ViewerHovercardContext\",\"description\":\"A hovercard context with a message describing how the viewer is related.\",\"fields\":[{\"name\":\"message\",\"description\":\"A string describing this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"octicon\",\"description\":\"An octicon to accompany this context\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewer\",\"description\":\"Identifies the user who is related to this context.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"User\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"HovercardContext\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INTERFACE\",\"name\":\"Votable\",\"description\":\"A subject that may be upvoted.\",\"fields\":[{\"name\":\"upvoteCount\",\"description\":\"Number of upvotes that this subject has received.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanUpvote\",\"description\":\"Whether or not the current user can add or remove an upvote on this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerHasUpvoted\",\"description\":\"Whether or not the current user has already upvoted this subject.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Discussion\",\"ofType\":null},{\"kind\":\"OBJECT\",\"name\":\"DiscussionComment\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"Workflow\",\"description\":\"A workflow contains meta information about an Actions workflow file.\",\"fields\":[{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the Workflow object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":\"The name of the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this workflow\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"runs\",\"description\":\"The runs of the workflow.\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"orderBy\",\"description\":\"Ordering options for the connection\",\"type\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowRunOrder\",\"ofType\":null},\"defaultValue\":\"{field: CREATED_AT, direction: DESC}\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"state\",\"description\":\"The state of the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"WorkflowState\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this workflow\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowFileReference\",\"description\":\"A workflow that must run for this rule to pass\",\"fields\":[{\"name\":\"path\",\"description\":\"The path to the workflow file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ref\",\"description\":\"The ref (branch or tag) of the workflow file to use\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository where the workflow is defined\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"sha\",\"description\":\"The commit SHA of the workflow file to use\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowFileReferenceInput\",\"description\":\"A workflow that must run for this rule to pass\",\"fields\":null,\"inputFields\":[{\"name\":\"path\",\"description\":\"The path to the workflow file\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"ref\",\"description\":\"The ref (branch or tag) of the workflow file to use\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"repositoryId\",\"description\":\"The ID of the repository where the workflow is defined\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"sha\",\"description\":\"The commit SHA of the workflow file to use\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"description\":\"A workflow run.\",\"fields\":[{\"name\":\"checkSuite\",\"description\":\"The check suite this workflow run belongs to.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"CheckSuite\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"createdAt\",\"description\":\"Identifies the date and time when the object was created.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"databaseId\",\"description\":\"Identifies the primary key from the database.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deploymentReviews\",\"description\":\"The log of deployment reviews\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentReviewConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"event\",\"description\":\"The event that triggered the workflow run\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"file\",\"description\":\"The workflow file\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunFile\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"id\",\"description\":\"The Node ID of the WorkflowRun object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pendingDeploymentRequests\",\"description\":\"The pending deployment requests of all check runs in this workflow run\",\"args\":[{\"name\":\"after\",\"description\":\"Returns the elements in the list that come after the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"before\",\"description\":\"Returns the elements in the list that come before the specified cursor.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"first\",\"description\":\"Returns the first _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"last\",\"description\":\"Returns the last _n_ elements from the list.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null},\"defaultValue\":null}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"DeploymentRequestConnection\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this workflow run\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"runNumber\",\"description\":\"A number that uniquely identifies this workflow run in its parent workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"updatedAt\",\"description\":\"Identifies the date and time when the object was last updated.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"DateTime\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this workflow run\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"workflow\",\"description\":\"The workflow executed in this workflow run.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"Workflow\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunConnection\",\"description\":\"The connection type for WorkflowRun.\",\"fields\":[{\"name\":\"edges\",\"description\":\"A list of edges.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunEdge\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"nodes\",\"description\":\"A list of nodes.\",\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"pageInfo\",\"description\":\"Information to aid in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"PageInfo\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"totalCount\",\"description\":\"Identifies the total count of items in the connection.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Int\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunEdge\",\"description\":\"An edge in a connection.\",\"fields\":[{\"name\":\"cursor\",\"description\":\"A cursor for use in pagination.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"node\",\"description\":\"The item at the end of the edge.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowRunFile\",\"description\":\"An executed workflow file for a workflow run.\",\"fields\":[{\"name\":\"id\",\"description\":\"The Node ID of the WorkflowRunFile object\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"ID\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"path\",\"description\":\"The path of the workflow file relative to its repository.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryFileUrl\",\"description\":\"The direct link to the file in the repository which stores the workflow file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"repositoryName\",\"description\":\"The repository name and owner which stores the workflow file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"resourcePath\",\"description\":\"The HTTP path for this workflow run file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"run\",\"description\":\"The parent workflow run execution for this file.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowRun\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"url\",\"description\":\"The HTTP URL for this workflow run file\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"URI\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanPushRepository\",\"description\":\"If the viewer has permissions to push to the repository which stores the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"viewerCanReadRepository\",\"description\":\"If the viewer has permissions to read the repository which stores the workflow.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[{\"kind\":\"INTERFACE\",\"name\":\"Node\",\"ofType\":null},{\"kind\":\"INTERFACE\",\"name\":\"UniformResourceLocatable\",\"ofType\":null}],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowRunOrder\",\"description\":\"Ways in which lists of workflow runs can be ordered upon return.\",\"fields\":null,\"inputFields\":[{\"name\":\"field\",\"description\":\"The field by which to order workflows.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"WorkflowRunOrderField\",\"ofType\":null}},\"defaultValue\":null},{\"name\":\"direction\",\"description\":\"The direction in which to order workflow runs by the specified field.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"OrderDirection\",\"ofType\":null}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"WorkflowRunOrderField\",\"description\":\"Properties by which workflow run connections can be ordered.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"CREATED_AT\",\"description\":\"Order workflow runs by most recently created\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"WorkflowState\",\"description\":\"The possible states for a workflow.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"ACTIVE\",\"description\":\"The workflow is active.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DELETED\",\"description\":\"The workflow was deleted from the git repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED_FORK\",\"description\":\"The workflow was disabled by default on a fork.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED_INACTIVITY\",\"description\":\"The workflow was disabled for inactivity in the repository.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"DISABLED_MANUALLY\",\"description\":\"The workflow was disabled manually.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"WorkflowsParameters\",\"description\":\"Require all changes made to a targeted branch to pass the specified workflows before they can be merged.\",\"fields\":[{\"name\":\"doNotEnforceOnCreate\",\"description\":\"Allow repositories and branches to be created if a check would otherwise prohibit it.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"workflows\",\"description\":\"Workflows that must pass for this rule to pass.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"WorkflowFileReference\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowsParametersInput\",\"description\":\"Require all changes made to a targeted branch to pass the specified workflows before they can be merged.\",\"fields\":null,\"inputFields\":[{\"name\":\"doNotEnforceOnCreate\",\"description\":\"Allow repositories and branches to be created if a check would otherwise prohibit it.\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":null},{\"name\":\"workflows\",\"description\":\"Workflows that must pass for this rule to pass.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"INPUT_OBJECT\",\"name\":\"WorkflowFileReferenceInput\",\"ofType\":null}}}},\"defaultValue\":null}],\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"X509Certificate\",\"description\":\"A valid x509 certificate string\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"SCALAR\",\"name\":\"_Any\",\"description\":null,\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"UNION\",\"name\":\"_Entity\",\"description\":null,\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":null,\"possibleTypes\":[{\"kind\":\"OBJECT\",\"name\":\"Issue\",\"ofType\":null}]},{\"kind\":\"OBJECT\",\"name\":\"__Directive\",\"description\":\"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\"fields\":[{\"name\":\"args\",\"description\":null,\"args\":[{\"name\":\"includeDeprecated\",\"description\":null,\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__InputValue\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isRepeatable\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"locations\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"__DirectiveLocation\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"onField\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Use `locations`.\"},{\"name\":\"onFragment\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Use `locations`.\"},{\"name\":\"onOperation\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":true,\"deprecationReason\":\"Use `locations`.\"}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"__DirectiveLocation\",\"description\":\"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"QUERY\",\"description\":\"Location adjacent to a query operation.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"MUTATION\",\"description\":\"Location adjacent to a mutation operation.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SUBSCRIPTION\",\"description\":\"Location adjacent to a subscription operation.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIELD\",\"description\":\"Location adjacent to a field.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FRAGMENT_DEFINITION\",\"description\":\"Location adjacent to a fragment definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FRAGMENT_SPREAD\",\"description\":\"Location adjacent to a fragment spread.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INLINE_FRAGMENT\",\"description\":\"Location adjacent to an inline fragment.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SCHEMA\",\"description\":\"Location adjacent to a schema definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"SCALAR\",\"description\":\"Location adjacent to a scalar definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OBJECT\",\"description\":\"Location adjacent to an object type definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"FIELD_DEFINITION\",\"description\":\"Location adjacent to a field definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ARGUMENT_DEFINITION\",\"description\":\"Location adjacent to an argument definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INTERFACE\",\"description\":\"Location adjacent to an interface definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNION\",\"description\":\"Location adjacent to a union definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ENUM\",\"description\":\"Location adjacent to an enum definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ENUM_VALUE\",\"description\":\"Location adjacent to an enum value definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INPUT_OBJECT\",\"description\":\"Location adjacent to an input object type definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INPUT_FIELD_DEFINITION\",\"description\":\"Location adjacent to an input object field definition.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"VARIABLE_DEFINITION\",\"description\":\"Location adjacent to a variable definition.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"__EnumValue\",\"description\":\"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.\",\"fields\":[{\"name\":\"deprecationReason\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDeprecated\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"__Field\",\"description\":\"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.\",\"fields\":[{\"name\":\"args\",\"description\":null,\"args\":[{\"name\":\"includeDeprecated\",\"description\":null,\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__InputValue\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deprecationReason\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDeprecated\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"__InputValue\",\"description\":\"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.\",\"fields\":[{\"name\":\"defaultValue\",\"description\":\"A GraphQL-formatted string representing the default value for this input value.\",\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"deprecationReason\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isDeprecated\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"type\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"__Schema\",\"description\":\"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.\",\"fields\":[{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"directives\",\"description\":\"A list of all directives supported by this server.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Directive\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"mutationType\",\"description\":\"If this server supports mutation, the type that mutation operations will be rooted at.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"queryType\",\"description\":\"The type that query operations will be rooted at.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"subscriptionType\",\"description\":\"If this server support subscription, the type that subscription operations will be rooted at.\",\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"types\",\"description\":\"A list of all types supported by this server.\",\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}}}},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"description\":\"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.\",\"fields\":[{\"name\":\"description\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"enumValues\",\"description\":null,\"args\":[{\"name\":\"includeDeprecated\",\"description\":null,\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__EnumValue\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"fields\",\"description\":null,\"args\":[{\"name\":\"includeDeprecated\",\"description\":null,\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Field\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"inputFields\",\"description\":null,\"args\":[{\"name\":\"includeDeprecated\",\"description\":null,\"type\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null},\"defaultValue\":\"false\"}],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__InputValue\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"interfaces\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"isOneOf\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"kind\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"ENUM\",\"name\":\"__TypeKind\",\"ofType\":null}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"name\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ofType\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"possibleTypes\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"LIST\",\"name\":null,\"ofType\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"OBJECT\",\"name\":\"__Type\",\"ofType\":null}}},\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"specifiedByURL\",\"description\":null,\"args\":[],\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"isDeprecated\":false,\"deprecationReason\":null}],\"inputFields\":null,\"interfaces\":[],\"enumValues\":null,\"possibleTypes\":null},{\"kind\":\"ENUM\",\"name\":\"__TypeKind\",\"description\":\"An enum describing what kind of type a given `__Type` is.\",\"fields\":null,\"inputFields\":null,\"interfaces\":null,\"enumValues\":[{\"name\":\"SCALAR\",\"description\":\"Indicates this type is a scalar.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"OBJECT\",\"description\":\"Indicates this type is an object. `fields` and `interfaces` are valid fields.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INTERFACE\",\"description\":\"Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"UNION\",\"description\":\"Indicates this type is a union. `possibleTypes` is a valid field.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"ENUM\",\"description\":\"Indicates this type is an enum. `enumValues` is a valid field.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"INPUT_OBJECT\",\"description\":\"Indicates this type is an input object. `inputFields` is a valid field.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"LIST\",\"description\":\"Indicates this type is a list. `ofType` is a valid field.\",\"isDeprecated\":false,\"deprecationReason\":null},{\"name\":\"NON_NULL\",\"description\":\"Indicates this type is a non-null. `ofType` is a valid field.\",\"isDeprecated\":false,\"deprecationReason\":null}],\"possibleTypes\":null}],\"directives\":[{\"name\":\"deprecated\",\"description\":\"Marks an element of a GraphQL schema as no longer supported.\",\"locations\":[\"FIELD_DEFINITION\",\"ENUM_VALUE\",\"ARGUMENT_DEFINITION\",\"INPUT_FIELD_DEFINITION\"],\"args\":[{\"name\":\"reason\",\"description\":\"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).\",\"type\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null},\"defaultValue\":\"\\\"No longer supported\\\"\"}]},{\"name\":\"include\",\"description\":\"Directs the executor to include this field or fragment only when the `if` argument is true.\",\"locations\":[\"FIELD\",\"FRAGMENT_SPREAD\",\"INLINE_FRAGMENT\"],\"args\":[{\"name\":\"if\",\"description\":\"Included when true.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}]},{\"name\":\"oneOf\",\"description\":\"Requires that exactly one field must be supplied and that field must not be `null`.\",\"locations\":[\"INPUT_OBJECT\"],\"args\":[]},{\"name\":\"skip\",\"description\":\"Directs the executor to skip this field or fragment when the `if` argument is true.\",\"locations\":[\"FIELD\",\"FRAGMENT_SPREAD\",\"INLINE_FRAGMENT\"],\"args\":[{\"name\":\"if\",\"description\":\"Skipped when true.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"Boolean\",\"ofType\":null}},\"defaultValue\":null}]},{\"name\":\"specifiedBy\",\"description\":\"Exposes a URL that specifies the behavior of this scalar.\",\"locations\":[\"SCALAR\"],\"args\":[{\"name\":\"url\",\"description\":\"The URL that specifies the behavior of this scalar.\",\"type\":{\"kind\":\"NON_NULL\",\"name\":null,\"ofType\":{\"kind\":\"SCALAR\",\"name\":\"String\",\"ofType\":null}},\"defaultValue\":null}]}]}}}\n"
  },
  {
    "path": "testdata/gh-dash/config.yml",
    "content": "confirmQuit: false\ndefaults:\n    issuesLimit: 20\n    layout:\n        issues:\n            assignees:\n                hidden: true\n                width: 20\n            createdAt:\n                width: 5\n            creator:\n                width: 10\n            creatorIcon:\n                hidden: false\n            repo:\n                width: 15\n            updatedAt:\n                width: 5\n        prs:\n            assignees:\n                hidden: true\n                width: 20\n            author:\n                width: 15\n            authorIcon:\n                hidden: false\n            base:\n                hidden: true\n                width: 15\n            createdAt:\n                width: 5\n            lines:\n                width: 15\n            repo:\n                width: 20\n            updatedAt:\n                width: 5\n    prApproveComment: LGTM\n    preview:\n        Open: true\n        Width: 50\n    prsLimit: 20\n    refetchIntervalMinutes: 30\n    view: prs\nissuesSections:\n    - Filters: is:open author:@me\n      Title: My Issues\n    - Filters: is:open assignee:@me\n      Title: Assigned\n    - Filters: is:open involves:@me -author:@me\n      Title: Involved\nkeybindings:\n    issues: []\n    prs: []\n    universal: []\npager:\n    diff: \"\"\nprSections:\n    - Filters: is:open author:@me\n      Title: My Pull Requests\n    - Filters: is:open review-requested:@me\n      Title: Needs My Review\n    - Filters: is:open involves:@me -author:@me\n      Title: Involved\nrepo:\n    branchesRefetchIntervalSeconds: 30\n    prsRefetchIntervalSeconds: 60\nrepoPaths: {}\nshowAuthorIcons: true\nsmartFilteringAtLaunch: true\ntheme:\n    ui:\n        sectionsShowCount: true\n        table:\n            compact: false\n            showSeparator: true\n"
  },
  {
    "path": "testdata/graphql.http",
    "content": "###\n# @env-stdin-cmd GH_TOKEN gh auth token\n\nGRAPHQL https://api.github.com/graphql HTTP/1.1\nAccept: application/json\nAuthorization: Bearer {{GH_TOKEN}}\n\nquery PullRequestChecks($url: URI!){\n  resource(url: $url) {\n    ... on PullRequest {\n      lastCommit: commits(last: 1) {\n        nodes {\n          commit {\n            statusCheckRollup {\n              state\n            }\n          }\n        }\n      }\n      allCommits: commits(last: 100) {\n        nodes {\n          commit {\n            abbreviatedOid\n            committedDate\n            messageHeadline\n            author {\n              name\n              user {\n                login\n              }\n            }\n            statusCheckRollup {\n              state\n              contexts(last: 1) {\n                checkRunCount\n                checkRunCountsByState {\n                  count\n                  state\n                }\n              }\n            }\n            checkSuites {\n              totalCount\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\n{ \"url\": \"https://github.com/dlvhdr/gh-dash/pull/729\" }\n"
  }
]