{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "${api_url}"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/python-connector-base:4.1.0@sha256:1d1aa21d34e851df4e8a87b391c27724c06e2597608e7161f4d167be853bd7b6"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "00d7a7eb-9922-4463-9d9d-fac37438bc12",
          "name": "github_config_dev_null"
        },
        {
          "id": "65c98c6e-c8e5-4ff4-a822-32b79d10468b",
          "name": "github_config_oauth_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests"
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-GITHUB_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-GITHUB_OAUTH_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "2.1.20-preview.ee88ea6",
  "dockerRepository": "airbyte/source-github",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/github",
  "erdUrl": "https://dbdocs.io/airbyteio/source-github?view=relationships",
  "externalDocumentationUrls": [
    {
      "title": "Breaking changes",
      "type": "api_deprecations",
      "url": "https://docs.github.com/en/rest/about-the-rest-api/breaking-changes"
    },
    {
      "title": "GitHub REST API reference",
      "type": "api_reference",
      "url": "https://docs.github.com/en/rest"
    },
    {
      "title": "API Versions",
      "type": "api_release_history",
      "url": "https://docs.github.com/en/rest/about-the-rest-api/api-versions"
    },
    {
      "title": "GitHub API changelog",
      "type": "api_release_history",
      "url": "https://github.blog/changelog/label/api/"
    },
    {
      "title": "GitHub authentication",
      "type": "authentication_guide",
      "url": "https://docs.github.com/en/rest/overview/authenticating-to-the-rest-api"
    },
    {
      "title": "GitHub REST API OpenAPI specification",
      "type": "openapi_spec",
      "url": "https://github.com/github/rest-api-description"
    },
    {
      "title": "GitHub rate limits",
      "type": "rate_limits",
      "url": "https://docs.github.com/en/rest/overview/rate-limits-for-the-rest-api"
    },
    {
      "title": "GitHub Status",
      "type": "status_page",
      "url": "https://www.githubstatus.com/"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "b12ecff9916b41dd184284f1bc9a172ad764355c",
      "commit_timestamp": "2026-04-10T15:18:46+00:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-github/2.1.20-preview.ee88ea6.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-github/2.1.20-preview.ee88ea6/metadata.yaml",
      "metadata_last_modified": "2026-04-10T16:00:11.186064+00:00",
      "registry_entry_generated_at": "2026-04-10T16:00:11.186064+00:00"
    }
  },
  "githubIssueLabel": "source-github",
  "icon": "github.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-github/latest/icon.svg",
  "language": "python",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 3600,
  "name": "GitHub",
  "packageInfo": {
    "cdk_version": "python:7.10.1"
  },
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "2.0.0": {
        "message": "This release renames reaction fields for compatibility across all destinations. The +1 and -1 fields have been renamed to plus_one and minus_one in streams containing reactions (comments, commit_comments, issue_events, issues, releases, review_comments). Users should refresh their source schema and reset affected streams after upgrading.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/github-migrations#2.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "comments",
              "commit_comments",
              "issue_events",
              "issues",
              "releases",
              "review_comments"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2025-11-21"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/github-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": true,
      "packageName": "airbyte-source-github"
    }
  },
  "sourceDefinitionId": "ef69ef6e-aa7f-4af1-a01d-ef775033524e",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "additionalProperties": false,
          "properties": {
            "access_token": {
              "path_in_connector_config": [
                "credentials",
                "access_token"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_secret": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "path_in_connector_config": [
                "credentials",
                "client_id"
              ],
              "type": "string"
            },
            "client_secret": {
              "path_in_connector_config": [
                "credentials",
                "client_secret"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "oauth_connector_input_specification": {
          "access_token_url": "https://github.com/login/oauth/access_token?{{client_id_param}}&{{client_secret_param}}&{{auth_code_param}}&{{redirect_uri_param}}",
          "consent_url": "https://github.com/login/oauth/authorize?{{client_id_param}}&{{redirect_uri_param}}&{{scopes_param}}&{{state_param}}",
          "extract_output": [
            "access_token"
          ]
        }
      },
      "predicate_key": [
        "credentials",
        "option_title"
      ],
      "predicate_value": "OAuth Credentials"
    },
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "api_url": {
          "default": "https://api.github.com/",
          "description": "Please enter your basic URL from self-hosted GitHub instance or leave it empty to use GitHub.",
          "examples": [
            "https://github.com",
            "https://github.company.org"
          ],
          "order": 3,
          "title": "API URL",
          "type": "string"
        },
        "branch": {
          "airbyte_hidden": true,
          "description": "(DEPRCATED) Space-delimited list of GitHub repository branches to pull commits for, e.g. `airbytehq/airbyte/master`. If no branches are specified for a repository, the default branch will be pulled.",
          "examples": [
            "airbytehq/airbyte/master airbytehq/airbyte/my-branch"
          ],
          "pattern_descriptor": "org/repo/branch1 org/repo/branch2",
          "title": "Branch",
          "type": "string"
        },
        "branches": {
          "description": "List of GitHub repository branches to pull commits for, e.g. `airbytehq/airbyte/master`. If no branches are specified for a repository, the default branch will be pulled.",
          "examples": [
            "airbytehq/airbyte/master",
            "airbytehq/airbyte/my-branch"
          ],
          "items": {
            "type": "string"
          },
          "order": 4,
          "pattern_descriptor": "org/repo/branch1 org/repo/branch2",
          "title": "Branches",
          "type": "array"
        },
        "credentials": {
          "description": "Choose how to authenticate to GitHub",
          "group": "auth",
          "oneOf": [
            {
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "OAuth access token",
                  "title": "Access Token",
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "OAuth Client Id",
                  "title": "Client Id",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "OAuth Client secret",
                  "title": "Client secret",
                  "type": "string"
                },
                "option_title": {
                  "const": "OAuth Credentials",
                  "order": 0,
                  "type": "string"
                }
              },
              "required": [
                "access_token"
              ],
              "title": "OAuth",
              "type": "object"
            },
            {
              "properties": {
                "option_title": {
                  "const": "PAT Credentials",
                  "order": 0,
                  "type": "string"
                },
                "personal_access_token": {
                  "airbyte_secret": true,
                  "description": "Log into GitHub and then generate a <a href=\"https://github.com/settings/tokens\">personal access token</a>. To load balance your API quota consumption across multiple API tokens, input multiple tokens separated with \",\"",
                  "title": "Personal Access Tokens",
                  "type": "string"
                }
              },
              "required": [
                "personal_access_token"
              ],
              "title": "Personal Access Token",
              "type": "object"
            }
          ],
          "order": 0,
          "title": "Authentication",
          "type": "object"
        },
        "max_waiting_time": {
          "default": 120,
          "description": "Max time (in minutes) the connector will wait when all API tokens are rate-limited before failing. GitHub rate limits reset every 60 minutes, so values above 60 allow the connector to wait for a full reset cycle.",
          "examples": [
            10,
            60,
            120
          ],
          "maximum": 240,
          "minimum": 1,
          "order": 5,
          "title": "Max Waiting Time (in minutes)",
          "type": "integer"
        },
        "repositories": {
          "description": "List of GitHub organizations/repositories, e.g. `airbytehq/airbyte` for single repository, `airbytehq/*` for get all repositories from organization and `airbytehq/a* for matching multiple repositories by pattern.",
          "examples": [
            "airbytehq/airbyte",
            "airbytehq/another-repo",
            "airbytehq/*",
            "airbytehq/a*"
          ],
          "items": {
            "pattern": "^[\\w.-]+/(([\\w.-]*\\*)|[\\w.-]+(?<!\\.git))$",
            "type": "string"
          },
          "minItems": 1,
          "order": 1,
          "pattern_descriptor": "org/repo org/another-repo org/* org/a*",
          "title": "GitHub Repositories",
          "type": "array"
        },
        "repository": {
          "airbyte_hidden": true,
          "description": "(DEPRCATED) Space-delimited list of GitHub organizations/repositories, e.g. `airbytehq/airbyte` for single repository, `airbytehq/*` for get all repositories from organization and `airbytehq/airbyte airbytehq/another-repo` for multiple repositories.",
          "examples": [
            "airbytehq/airbyte airbytehq/another-repo",
            "airbytehq/*",
            "airbytehq/airbyte"
          ],
          "pattern": "^([\\w.-]+/(\\*|[\\w.-]+(?<!\\.git))\\s+)*[\\w.-]+/(\\*|[\\w.-]+(?<!\\.git))$",
          "pattern_descriptor": "org/repo org/another-repo org/*",
          "title": "GitHub Repositories",
          "type": "string"
        },
        "start_date": {
          "description": "The date from which you'd like to replicate data from GitHub in the format YYYY-MM-DDT00:00:00Z. If the date is not set, all data will be replicated.  For the streams which support this configuration, only data generated on or after the start date will be replicated. This field doesn't apply to all streams, see the <a href=\"https://docs.airbyte.com/integrations/sources/github\">docs</a> for more info",
          "examples": [
            "2021-03-01T00:00:00Z"
          ],
          "format": "date-time",
          "order": 2,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
          "pattern_descriptor": "YYYY-MM-DDTHH:mm:ssZ",
          "title": "Start date",
          "type": "string"
        }
      },
      "required": [
        "credentials",
        "repositories"
      ],
      "title": "GitHub Source Spec",
      "type": "object"
    },
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/github",
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "branches",
      "comments",
      "issues",
      "organizations",
      "pull_requests",
      "repositories",
      "stargazers",
      "tags",
      "teams",
      "users"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "language:python",
    "cdk:python"
  ],
  "tombstone": false
}
