openhound-github 0.16.1__tar.gz → 0.18.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openhound_github-0.16.1 → openhound_github-0.18.0}/PKG-INFO +44 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/README.md +43 -0
- openhound_github-0.18.0/descriptions/edges/GH_AuthorizedForOrganization.md +20 -0
- openhound_github-0.18.0/descriptions/edges/GH_Contains.md +104 -0
- openhound_github-0.18.0/descriptions/edges/GH_HasPersonalAccessToken.md +23 -0
- openhound_github-0.18.0/descriptions/nodes/GH_ClassicPersonalAccessToken.md +43 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Enterprise.md +36 -34
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Environment.md +2 -2
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Organization.md +32 -30
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_User.md +18 -16
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/README.md +1 -1
- openhound_github-0.18.0/extension/saved_searches/expired-pats.json +5 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/schema.json +65 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/helpers.py +41 -3
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/kinds/edges.py +1 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/kinds/nodes.py +1 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/lookup.py +16 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/__init__.py +2 -0
- openhound_github-0.18.0/src/openhound_github/models/classic_personal_access_token.py +169 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_member.py +1 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/environment.py +1 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org.py +6 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/user.py +2 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/workflow_job.py +3 -1
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/resources/enterprise.py +413 -20
- openhound_github-0.18.0/tests/test_classic_personal_access_tokens.py +810 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_environment_model.py +3 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_helpers.py +33 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_workflow_interception_path.py +2 -2
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_workflow_model.py +4 -4
- openhound_github-0.16.1/descriptions/edges/GH_Contains.md +0 -101
- openhound_github-0.16.1/descriptions/edges/GH_HasPersonalAccessToken.md +0 -20
- openhound_github-0.16.1/extension/saved_searches/expired-pats.json +0 -5
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/CONTRIBUTING.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GOVERNANCE.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-COC-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-CONTRIB-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-GOV-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-LIC-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/GitHub-SEC-Header.png +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/SECURITY.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/SO-Dark.svg +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/SO-FOSS-Dark.svg +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/SO-FOSS-Light.svg +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/SO-Light.svg +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/workflows/publish.yml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/workflows/release-on-merge.yml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.github/workflows/validate-branch.yml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.gitignore +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.gitmodules +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/.pre-commit-config.yaml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/LICENSE.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AddAssignee.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AddCollaborator.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AddLabel.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AddMember.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AddedDeployKey.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AdminTo.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_AssignedTo.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CallsWorkflow.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanAccess.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanAccessSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreateBranch.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanEditProtection.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanInterceptJob.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanPwnRequest.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanReadSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanUseRunner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CanWriteBranch.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CloseDiscussion.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CloseIssue.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ClosePullRequest.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateRepository.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateTag.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_CreateTeam.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeleteIssue.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeleteTag.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DependsOn.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_DeploysTo.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_EditRepoProtections.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasBaseRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasMember.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasRunner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_HasVariable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_InheritedFrom.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_InstalledAs.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_InviteMember.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_IsEligibleFor.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageTopics.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ManageWebhooks.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_MapsToUser.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_MemberOf.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_Owns.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ProtectedBy.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReadRepoContents.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RemoveAssignee.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RemoveLabel.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReopenIssue.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RequestPrReview.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RunOrgMigration.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_RunsOn.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SetIssueType.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SetMilestone.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SetSocialPreview.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_SyncedTo.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_TransferRepository.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_UsesSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_UsesVariable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ValidToken.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteRepoContents.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_App.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_AppInstallation.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Branch.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_DeployKey.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_OrgRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_OrgRunner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_OrgSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_RepoRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_RepoRunner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_RepoSecret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Repository.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Runner.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_RunnerGroup.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Secret.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Team.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_TeamRole.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Variable.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_Workflow.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_WorkflowJob.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/descriptions/nodes/GH_WorkflowStep.md +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/docs/og-docs.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-organizations.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/active-leaked-secrets.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/all-actions-allowed.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/app-installations-all-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-self-approval.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/bypass-pr-requirements.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/dangerous-branch-perms.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/default-repository-permissions.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/environments-admin-bypass.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/external-identities-without-scim.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/github-to-azure-identity.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/global-repo-perms.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/hybrid-identities.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-create-pages.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-create-public-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-delete-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/org-owners.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/orgs-without-2fa.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/pats-all-repo-access.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/pending-pat-requests.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/public-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/push-to-protected-branches.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/repository-workflows.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/saml-configuration.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/secret-scanning-alerts.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/team-membership-admin.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/team-structure.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/unprotected-branches.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/unprotected-default-branches.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/justfile +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/pyproject.toml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/scripts/generate_gh_description_docs.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/main.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/__init__.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/auth.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/extension.yaml +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/github_rest_client.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/github_retry.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/graph.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/graphql.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/main.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/actions_permission.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/app_installation.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/branch.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/branch_protection_rule.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/deploy_key.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_admin.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_helpers.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_managed_user.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_organization.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_role.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_role_team.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_role_user.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_team.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_team_member.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_team_organization.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_team_role.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/enterprise_user.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/env_secret.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/env_variable.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/environment_branch_policy.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/external_identity.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org_role.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org_role_member.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org_role_team.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org_secret.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/org_variable.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/permissions.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/personal_access_token.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/personal_access_token_access.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/personal_access_token_request.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/projected_enterprise_team.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/repo_role_assignment.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/repository.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/repository_role.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/repository_secret.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/repository_variable.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/runner.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/saml_helpers.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/saml_issuer.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/saml_provider.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/saml_service_provider.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/scim_user.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/secret_scanning_alert.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/team.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/team_member.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/team_role.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/workflow.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/workflow_reference.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/models/workflow_step.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/resources/__init__.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/resources/organization.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/runner_ids.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/source.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/src/openhound_github/transforms.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_app_auth.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_branch_collection_gate.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_branch_protection_traversability.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_credential_permission_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/actions-permissions.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/actionsecrets.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/app.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/appinstalls.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/branch-policies.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/branch-prot-rules.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/branches.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/custom-roles.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/environments.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org-pat-request.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org-pat.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org-role-teams.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org-role-users.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org-roles.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/org.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/pat-repositories.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/repo-collaborators.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/repo-teams.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/repositories.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/scimusers.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/secrets.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/secretscanningalert.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/selected-org-secrets.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/variables.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_data/api/workflows.json +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_deploy_key_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_deploy_key_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_description_docs.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_enterprise_capabilities.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_enterprise_organization.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_enterprise_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_environment_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_environment_reviewer_lookup.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_error_resilience.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_github_app_retry.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_github_rest_client.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_github_retry.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_lookup.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_org_role_model.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_org_scim_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_org_secret_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_preproc.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_repository_rulesets.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_runner_ids.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_runner_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_runner_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_saml_helpers.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_saml_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_scim_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_source_endpoints.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_source_org_canonicalization.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_team_external_groups.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_variable_models.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/tests/test_workflow_resources.py +0 -0
- {openhound_github-0.16.1 → openhound_github-0.18.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: openhound-github
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Summary: Github collector for OpenHound
|
|
5
5
|
Author-email: "jdreijer@specterops.io" <jdreijer@specterops.io>, Jared Atkinson <jatkinson@specterops.io>
|
|
6
6
|
License-File: LICENSE.md
|
|
@@ -84,6 +84,49 @@ The collector runs successfully with the documented read-only permission set. So
|
|
|
84
84
|
|
|
85
85
|
If these optional permissions are not granted, OpenHound skips the affected resources and continues collecting the rest of the GitHub environment.
|
|
86
86
|
|
|
87
|
+
### Classic personal access token inventory
|
|
88
|
+
|
|
89
|
+
With GitHub Enterprise Cloud credentials, the collector uses the enterprise
|
|
90
|
+
credential inventory export to collect classic personal access tokens. It
|
|
91
|
+
requests the full inventory, stores every CSV row and its original field values
|
|
92
|
+
in the `enterprise_credential_inventory` resource, and currently models only
|
|
93
|
+
classic PAT rows. The export contains credential metadata, including owners,
|
|
94
|
+
scopes, authorization details, and token hashes used for audit correlation. It
|
|
95
|
+
does not contain plaintext PAT values. Limit access to the raw output to people
|
|
96
|
+
who need the credential inventory.
|
|
97
|
+
|
|
98
|
+
The enterprise GitHub App needs **Enterprise credentials: read** permission.
|
|
99
|
+
When collecting with a classic PAT instead of an app installation, that token
|
|
100
|
+
needs the `read:enterprise` scope. If an enterprise app also has
|
|
101
|
+
`credentials.pat_token` configured, the app remains the primary export
|
|
102
|
+
credential. The collector retries once with the PAT only when GitHub rejects
|
|
103
|
+
the app's export creation for authorization. It does not switch credentials
|
|
104
|
+
after an export starts or when GitHub reports a rate limit.
|
|
105
|
+
|
|
106
|
+
Rate-limit retry warnings identify the affected method and API path.
|
|
107
|
+
|
|
108
|
+
The CSV download is streamed, but the parsed export is held in memory as one
|
|
109
|
+
raw record; very large enterprises may need a chunked raw-resource design.
|
|
110
|
+
|
|
111
|
+
GitHub limits the number of exports an enterprise can start per day. When the
|
|
112
|
+
last successful export was downloaded within the past 24 hours, the collector
|
|
113
|
+
downloads it again before trying to start a new export. If GitHub reports that
|
|
114
|
+
the saved export is gone, the collector starts a new one and polls until its
|
|
115
|
+
CSV is ready. GitHub may still reject a new export when its limit is reached.
|
|
116
|
+
The raw record's `as_of` value and each PAT node's `inventory_as_of` value
|
|
117
|
+
show when that snapshot was taken. An unavailable or denied export is logged
|
|
118
|
+
and does not stop other resources from collecting.
|
|
119
|
+
|
|
120
|
+
Classic PAT nodes include the owner, scopes, lifecycle dates, credential
|
|
121
|
+
state, direct enterprise authorization, and total authorization count.
|
|
122
|
+
Organization edges record authorizations reported in the export. The
|
|
123
|
+
export does not enumerate repositories accessible to a classic PAT, so this
|
|
124
|
+
collection does not emit classic PAT-to-repository access edges. Potential
|
|
125
|
+
repository access can be derived from the token owner's repository roles and
|
|
126
|
+
the token's scopes, subject to organization policy and SSO authorization; it
|
|
127
|
+
is not a direct grant reported by the export. GitHub Enterprise Server and
|
|
128
|
+
organization-only configurations skip this resource.
|
|
129
|
+
|
|
87
130
|
[](#about)
|
|
88
131
|
|
|
89
132
|
## Getting Started
|
|
@@ -73,6 +73,49 @@ The collector runs successfully with the documented read-only permission set. So
|
|
|
73
73
|
|
|
74
74
|
If these optional permissions are not granted, OpenHound skips the affected resources and continues collecting the rest of the GitHub environment.
|
|
75
75
|
|
|
76
|
+
### Classic personal access token inventory
|
|
77
|
+
|
|
78
|
+
With GitHub Enterprise Cloud credentials, the collector uses the enterprise
|
|
79
|
+
credential inventory export to collect classic personal access tokens. It
|
|
80
|
+
requests the full inventory, stores every CSV row and its original field values
|
|
81
|
+
in the `enterprise_credential_inventory` resource, and currently models only
|
|
82
|
+
classic PAT rows. The export contains credential metadata, including owners,
|
|
83
|
+
scopes, authorization details, and token hashes used for audit correlation. It
|
|
84
|
+
does not contain plaintext PAT values. Limit access to the raw output to people
|
|
85
|
+
who need the credential inventory.
|
|
86
|
+
|
|
87
|
+
The enterprise GitHub App needs **Enterprise credentials: read** permission.
|
|
88
|
+
When collecting with a classic PAT instead of an app installation, that token
|
|
89
|
+
needs the `read:enterprise` scope. If an enterprise app also has
|
|
90
|
+
`credentials.pat_token` configured, the app remains the primary export
|
|
91
|
+
credential. The collector retries once with the PAT only when GitHub rejects
|
|
92
|
+
the app's export creation for authorization. It does not switch credentials
|
|
93
|
+
after an export starts or when GitHub reports a rate limit.
|
|
94
|
+
|
|
95
|
+
Rate-limit retry warnings identify the affected method and API path.
|
|
96
|
+
|
|
97
|
+
The CSV download is streamed, but the parsed export is held in memory as one
|
|
98
|
+
raw record; very large enterprises may need a chunked raw-resource design.
|
|
99
|
+
|
|
100
|
+
GitHub limits the number of exports an enterprise can start per day. When the
|
|
101
|
+
last successful export was downloaded within the past 24 hours, the collector
|
|
102
|
+
downloads it again before trying to start a new export. If GitHub reports that
|
|
103
|
+
the saved export is gone, the collector starts a new one and polls until its
|
|
104
|
+
CSV is ready. GitHub may still reject a new export when its limit is reached.
|
|
105
|
+
The raw record's `as_of` value and each PAT node's `inventory_as_of` value
|
|
106
|
+
show when that snapshot was taken. An unavailable or denied export is logged
|
|
107
|
+
and does not stop other resources from collecting.
|
|
108
|
+
|
|
109
|
+
Classic PAT nodes include the owner, scopes, lifecycle dates, credential
|
|
110
|
+
state, direct enterprise authorization, and total authorization count.
|
|
111
|
+
Organization edges record authorizations reported in the export. The
|
|
112
|
+
export does not enumerate repositories accessible to a classic PAT, so this
|
|
113
|
+
collection does not emit classic PAT-to-repository access edges. Potential
|
|
114
|
+
repository access can be derived from the token owner's repository roles and
|
|
115
|
+
the token's scopes, subject to organization policy and SSO authorization; it
|
|
116
|
+
is not a direct grant reported by the export. GitHub Enterprise Server and
|
|
117
|
+
organization-only configurations skip this resource.
|
|
118
|
+
|
|
76
119
|
[](#about)
|
|
77
120
|
|
|
78
121
|
## Getting Started
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# GH_AuthorizedForOrganization
|
|
2
|
+
|
|
3
|
+
## General Information
|
|
4
|
+
|
|
5
|
+
Classic personal access token has a recorded authorization for this organization.
|
|
6
|
+
|
|
7
|
+
## Edge Schema
|
|
8
|
+
|
|
9
|
+
| Source | Destination | Traversable |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `GH_ClassicPersonalAccessToken` | `GH_Organization` | `false` |
|
|
12
|
+
|
|
13
|
+
## Diagram
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
graph LR
|
|
17
|
+
n0["GH_ClassicPersonalAccessToken"]
|
|
18
|
+
n1["GH_Organization"]
|
|
19
|
+
n0 -.->|GH_AuthorizedForOrganization| n1
|
|
20
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# GH_Contains
|
|
2
|
+
|
|
3
|
+
## General Information
|
|
4
|
+
|
|
5
|
+
The non-traversable GH_Contains edge represents structural containment within the GitHub resource hierarchy. The enterprise contains enterprise teams, roles, managed users, classic personal access tokens, runner groups, and enterprise runners through their groups. The organization serves as a top-level container for users, teams, repositories, roles, secrets, app installations, fine-grained personal access tokens, and organization runner groups. Native organization runner groups contain organization runners. Repositories contain branches, workflows, branch protection rules, environments, repo-level secrets and variables, and repository-scoped runners. Environments contain environment branch policies, environment-scoped secrets, and environment-scoped variables. This edge is created by the collector to establish the resource hierarchy and is not traversable because containment alone does not imply privilege escalation.
|
|
6
|
+
|
|
7
|
+
## Edge Schema
|
|
8
|
+
|
|
9
|
+
| Source | Destination | Traversable |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `GH_Enterprise` | `GH_ClassicPersonalAccessToken` | `false` |
|
|
12
|
+
| `GH_Enterprise` | `GH_EnterpriseRole` | `false` |
|
|
13
|
+
| `GH_Enterprise` | `GH_EnterpriseRunnerGroup` | `false` |
|
|
14
|
+
| `GH_Enterprise` | `GH_EnterpriseTeam` | `false` |
|
|
15
|
+
| `GH_Enterprise` | `GH_Organization` | `false` |
|
|
16
|
+
| `GH_EnterpriseRunnerGroup` | `GH_EnterpriseRunner` | `false` |
|
|
17
|
+
| `GH_Environment` | `GH_EnvironmentBranchPolicy` | `false` |
|
|
18
|
+
| `GH_Environment` | `GH_EnvironmentSecret` | `false` |
|
|
19
|
+
| `GH_Environment` | `GH_EnvironmentVariable` | `false` |
|
|
20
|
+
| `GH_OrgRunnerGroup` | `GH_OrgRunner` | `false` |
|
|
21
|
+
| `GH_Organization` | `GH_AppInstallation` | `false` |
|
|
22
|
+
| `GH_Organization` | `GH_OrgRole` | `false` |
|
|
23
|
+
| `GH_Organization` | `GH_OrgRunnerGroup` | `false` |
|
|
24
|
+
| `GH_Organization` | `GH_OrgSecret` | `false` |
|
|
25
|
+
| `GH_Organization` | `GH_OrgVariable` | `false` |
|
|
26
|
+
| `GH_Organization` | `GH_PersonalAccessToken` | `false` |
|
|
27
|
+
| `GH_Organization` | `GH_PersonalAccessTokenRequest` | `false` |
|
|
28
|
+
| `GH_Organization` | `GH_SecretScanningAlert` | `false` |
|
|
29
|
+
| `GH_Repository` | `GH_Branch` | `false` |
|
|
30
|
+
| `GH_Repository` | `GH_BranchProtectionRule` | `false` |
|
|
31
|
+
| `GH_Repository` | `GH_DeployKey` | `false` |
|
|
32
|
+
| `GH_Repository` | `GH_Environment` | `false` |
|
|
33
|
+
| `GH_Repository` | `GH_RepoRunner` | `false` |
|
|
34
|
+
| `GH_Repository` | `GH_RepoSecret` | `false` |
|
|
35
|
+
| `GH_Repository` | `GH_RepoVariable` | `false` |
|
|
36
|
+
| `GH_Repository` | `GH_SecretScanningAlert` | `false` |
|
|
37
|
+
| `GH_Repository` | `GH_Workflow` | `false` |
|
|
38
|
+
| `GH_Workflow` | `GH_WorkflowJob` | `false` |
|
|
39
|
+
| `GH_WorkflowJob` | `GH_WorkflowStep` | `false` |
|
|
40
|
+
|
|
41
|
+
## Diagram
|
|
42
|
+
|
|
43
|
+
```mermaid
|
|
44
|
+
graph LR
|
|
45
|
+
n0["GH_Enterprise"]
|
|
46
|
+
n1["GH_ClassicPersonalAccessToken"]
|
|
47
|
+
n2["GH_EnterpriseRole"]
|
|
48
|
+
n3["GH_EnterpriseRunnerGroup"]
|
|
49
|
+
n4["GH_EnterpriseTeam"]
|
|
50
|
+
n5["GH_Organization"]
|
|
51
|
+
n6["GH_EnterpriseRunner"]
|
|
52
|
+
n7["GH_Environment"]
|
|
53
|
+
n8["GH_EnvironmentBranchPolicy"]
|
|
54
|
+
n9["GH_EnvironmentSecret"]
|
|
55
|
+
n10["GH_EnvironmentVariable"]
|
|
56
|
+
n11["GH_OrgRunnerGroup"]
|
|
57
|
+
n12["GH_OrgRunner"]
|
|
58
|
+
n13["GH_AppInstallation"]
|
|
59
|
+
n14["GH_OrgRole"]
|
|
60
|
+
n15["GH_OrgSecret"]
|
|
61
|
+
n16["GH_OrgVariable"]
|
|
62
|
+
n17["GH_PersonalAccessToken"]
|
|
63
|
+
n18["GH_PersonalAccessTokenRequest"]
|
|
64
|
+
n19["GH_SecretScanningAlert"]
|
|
65
|
+
n20["GH_Repository"]
|
|
66
|
+
n21["GH_Branch"]
|
|
67
|
+
n22["GH_BranchProtectionRule"]
|
|
68
|
+
n23["GH_DeployKey"]
|
|
69
|
+
n24["GH_RepoRunner"]
|
|
70
|
+
n25["GH_RepoSecret"]
|
|
71
|
+
n26["GH_RepoVariable"]
|
|
72
|
+
n27["GH_Workflow"]
|
|
73
|
+
n28["GH_WorkflowJob"]
|
|
74
|
+
n29["GH_WorkflowStep"]
|
|
75
|
+
n0 -.->|GH_Contains| n1
|
|
76
|
+
n0 -.->|GH_Contains| n2
|
|
77
|
+
n0 -.->|GH_Contains| n3
|
|
78
|
+
n0 -.->|GH_Contains| n4
|
|
79
|
+
n0 -.->|GH_Contains| n5
|
|
80
|
+
n3 -.->|GH_Contains| n6
|
|
81
|
+
n7 -.->|GH_Contains| n8
|
|
82
|
+
n7 -.->|GH_Contains| n9
|
|
83
|
+
n7 -.->|GH_Contains| n10
|
|
84
|
+
n11 -.->|GH_Contains| n12
|
|
85
|
+
n5 -.->|GH_Contains| n13
|
|
86
|
+
n5 -.->|GH_Contains| n14
|
|
87
|
+
n5 -.->|GH_Contains| n11
|
|
88
|
+
n5 -.->|GH_Contains| n15
|
|
89
|
+
n5 -.->|GH_Contains| n16
|
|
90
|
+
n5 -.->|GH_Contains| n17
|
|
91
|
+
n5 -.->|GH_Contains| n18
|
|
92
|
+
n5 -.->|GH_Contains| n19
|
|
93
|
+
n20 -.->|GH_Contains| n21
|
|
94
|
+
n20 -.->|GH_Contains| n22
|
|
95
|
+
n20 -.->|GH_Contains| n23
|
|
96
|
+
n20 -.->|GH_Contains| n7
|
|
97
|
+
n20 -.->|GH_Contains| n24
|
|
98
|
+
n20 -.->|GH_Contains| n25
|
|
99
|
+
n20 -.->|GH_Contains| n26
|
|
100
|
+
n20 -.->|GH_Contains| n19
|
|
101
|
+
n20 -.->|GH_Contains| n27
|
|
102
|
+
n27 -.->|GH_Contains| n28
|
|
103
|
+
n28 -.->|GH_Contains| n29
|
|
104
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# GH_HasPersonalAccessToken
|
|
2
|
+
|
|
3
|
+
## General Information
|
|
4
|
+
|
|
5
|
+
The non-traversable GH_HasPersonalAccessToken edge links a user to a personal access token they own. Fine-grained token ownership comes from organization approvals; classic token ownership comes from the enterprise credential inventory. The edge identifies the owner but does not by itself grant access to any organization or repository.
|
|
6
|
+
|
|
7
|
+
## Edge Schema
|
|
8
|
+
|
|
9
|
+
| Source | Destination | Traversable |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `GH_User` | `GH_ClassicPersonalAccessToken` | `false` |
|
|
12
|
+
| `GH_User` | `GH_PersonalAccessToken` | `false` |
|
|
13
|
+
|
|
14
|
+
## Diagram
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
graph LR
|
|
18
|
+
n0["GH_User"]
|
|
19
|
+
n1["GH_ClassicPersonalAccessToken"]
|
|
20
|
+
n2["GH_PersonalAccessToken"]
|
|
21
|
+
n0 -.->|GH_HasPersonalAccessToken| n1
|
|
22
|
+
n0 -.->|GH_HasPersonalAccessToken| n2
|
|
23
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# GH_ClassicPersonalAccessToken
|
|
2
|
+
|
|
3
|
+
## General Information
|
|
4
|
+
|
|
5
|
+
A classic personal access token found in the enterprise credential inventory.
|
|
6
|
+
|
|
7
|
+
## Properties
|
|
8
|
+
|
|
9
|
+
| Property | Type | Description |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `name` | `string` | The node name used for matching and display. |
|
|
12
|
+
| `displayname` | `string` | The human-readable display name. |
|
|
13
|
+
| `environmentid` | `string` | The identifier of the GitHub environment where this node was collected. |
|
|
14
|
+
| `last_seen` | `datetime` | The timestamp when this node was last observed during collection. |
|
|
15
|
+
| `node_id` | `string` | The stable identifier used as the OpenGraph node ID; this is the native GitHub node ID where available. |
|
|
16
|
+
| `credential_id` | `integer` | GitHub's ID for this classic personal access token. |
|
|
17
|
+
| `owner_id` | `integer` | GitHub's numeric ID for the token owner. |
|
|
18
|
+
| `owner_login` | `string` | Login of the token owner. |
|
|
19
|
+
| `scopes` | `list[string]` | OAuth scopes granted to the token. |
|
|
20
|
+
| `credential_state` | `string` | Whether GitHub reports the credential as active, expired, revoked, or deleted. |
|
|
21
|
+
| `expiry_status` | `string` | Whether expiration is scheduled, never, or unknown. |
|
|
22
|
+
| `enterprise_authorized` | `boolean` | Whether the credential is authorized directly for the enterprise. |
|
|
23
|
+
| `authorization_count` | `integer` | Total organization authorizations plus enterprise authorization. |
|
|
24
|
+
| `inventory_as_of` | `string` | Timestamp of the export snapshot used to observe the token. |
|
|
25
|
+
| `created_at` | `datetime` | Token creation time reported by GitHub. |
|
|
26
|
+
| `last_used_at` | `datetime` | Last use time reported by GitHub. |
|
|
27
|
+
| `expires_at` | `datetime` | Token expiration time reported by GitHub. |
|
|
28
|
+
| `authorized_organizations` | `list[string]` | Organizations with a reported credential authorization. |
|
|
29
|
+
| `environment_name` | `string` | Enterprise environment name. |
|
|
30
|
+
| `enterprise_name` | `string` | Enterprise from which the inventory was exported. |
|
|
31
|
+
|
|
32
|
+
## Diagram
|
|
33
|
+
|
|
34
|
+
```mermaid
|
|
35
|
+
graph LR
|
|
36
|
+
n0["GH_ClassicPersonalAccessToken"]
|
|
37
|
+
n1["GH_Organization"]
|
|
38
|
+
n2["GH_Enterprise"]
|
|
39
|
+
n3["GH_User"]
|
|
40
|
+
n0 -.->|GH_AuthorizedForOrganization| n1
|
|
41
|
+
n2 -.->|GH_Contains| n0
|
|
42
|
+
n3 -.->|GH_HasPersonalAccessToken| n0
|
|
43
|
+
```
|
|
@@ -34,41 +34,43 @@ A GitHub Enterprise account that contains organizations, enterprise teams, roles
|
|
|
34
34
|
```mermaid
|
|
35
35
|
graph LR
|
|
36
36
|
n0["GH_Enterprise"]
|
|
37
|
-
n1["
|
|
38
|
-
n2["
|
|
39
|
-
n3["
|
|
40
|
-
n4["
|
|
41
|
-
n5["
|
|
42
|
-
n6["
|
|
43
|
-
n7["
|
|
44
|
-
|
|
45
|
-
n0 -.->|GH_Contains|
|
|
37
|
+
n1["GH_ClassicPersonalAccessToken"]
|
|
38
|
+
n2["GH_EnterpriseManagedUser"]
|
|
39
|
+
n3["GH_EnterpriseRole"]
|
|
40
|
+
n4["GH_EnterpriseRunnerGroup"]
|
|
41
|
+
n5["GH_EnterpriseTeam"]
|
|
42
|
+
n6["GH_Organization"]
|
|
43
|
+
n7["GH_SamlIdentityProvider"]
|
|
44
|
+
n8["GH_User"]
|
|
45
|
+
n0 -.->|GH_Contains| n1
|
|
46
|
+
n0 -.->|GH_HasMember| n2
|
|
46
47
|
n0 -.->|GH_Contains| n3
|
|
47
48
|
n0 -.->|GH_Contains| n4
|
|
48
49
|
n0 -.->|GH_Contains| n5
|
|
49
|
-
n0 -.->|
|
|
50
|
-
n0 -.->|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
50
|
+
n0 -.->|GH_Contains| n6
|
|
51
|
+
n0 -.->|GH_HasSamlIdentityProvider| n7
|
|
52
|
+
n0 -.->|GH_HasMember| n8
|
|
53
|
+
n3 -.->|GH_CreateEnterpriseOrganizations| n0
|
|
54
|
+
n3 -.->|GH_EditEnterpriseCustomPropertiesForOrganizations| n0
|
|
55
|
+
n3 -->|GH_ManageEnterpriseAdmins| n0
|
|
56
|
+
n3 -.->|GH_ManageEnterpriseIdentityProvider| n0
|
|
57
|
+
n3 -->|GH_ManageEnterpriseMembers| n0
|
|
58
|
+
n3 -->|GH_ManageEnterpriseOrganizationAdmins| n0
|
|
59
|
+
n3 -.->|GH_ManageEnterpriseOrganizations| n0
|
|
60
|
+
n3 -.->|GH_ManageEnterpriseReferrals| n0
|
|
61
|
+
n3 -.->|GH_ManageEnterpriseTeams| n0
|
|
62
|
+
n3 -.->|GH_ReadEnterpriseAuditLog| n0
|
|
63
|
+
n3 -.->|GH_ReadEnterpriseDomainVerification| n0
|
|
64
|
+
n3 -.->|GH_ReadEnterpriseMembers| n0
|
|
65
|
+
n3 -.->|GH_ReadEnterpriseOrgProjects| n0
|
|
66
|
+
n3 -.->|GH_ReadEnterpriseOrganizationAdmin| n0
|
|
67
|
+
n3 -.->|GH_SetEnterpriseInteractionLimits| n0
|
|
68
|
+
n3 -.->|GH_ViewEnterpriseActionsUsageMetrics| n0
|
|
69
|
+
n3 -.->|GH_ViewEnterpriseBilling| n0
|
|
70
|
+
n3 -.->|GH_ViewEnterpriseSecretScanningAlerts| n0
|
|
71
|
+
n3 -.->|GH_WriteEnterpriseActionsPolicies| n0
|
|
72
|
+
n3 -.->|GH_WriteEnterpriseBilling| n0
|
|
73
|
+
n3 -.->|GH_WriteEnterprisePersonalAccessTokenPolicies| n0
|
|
74
|
+
n3 -.->|GH_WriteEnterpriseSso| n0
|
|
75
|
+
n3 -.->|GH_WriteEnterpriseTeamMembers| n0
|
|
74
76
|
```
|
|
@@ -12,8 +12,8 @@ GH_CanRequestOIDCTokenFor edges from GH_WorkflowJob nodes identify jobs with a s
|
|
|
12
12
|
|
|
13
13
|
| Property | Type | Description |
|
|
14
14
|
| --- | --- | --- |
|
|
15
|
-
| `name` | `string` | The
|
|
16
|
-
| `displayname` | `string` | The
|
|
15
|
+
| `name` | `string` | The repository-qualified environment name (e.g., `org/repo/production`). |
|
|
16
|
+
| `displayname` | `string` | The environment name shown in the UI (e.g., `production`). |
|
|
17
17
|
| `environmentid` | `string` | The identifier of the GitHub environment where this node was collected. |
|
|
18
18
|
| `last_seen` | `datetime` | The timestamp when this node was last observed during collection. |
|
|
19
19
|
| `node_id` | `string` | The stable identifier used as the OpenGraph node ID; this is the native GitHub node ID where available. |
|
|
@@ -90,40 +90,42 @@ Represents a GitHub organization. This is the root node of the graph and serves
|
|
|
90
90
|
|
|
91
91
|
```mermaid
|
|
92
92
|
graph LR
|
|
93
|
-
n0["
|
|
93
|
+
n0["GH_ClassicPersonalAccessToken"]
|
|
94
94
|
n1["GH_Organization"]
|
|
95
|
-
n2["
|
|
96
|
-
n3["
|
|
97
|
-
n4["
|
|
98
|
-
n5["
|
|
99
|
-
n6["
|
|
100
|
-
n7["
|
|
101
|
-
n8["
|
|
102
|
-
n9["
|
|
103
|
-
n10["
|
|
104
|
-
n11["
|
|
105
|
-
n12["
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
n3 -.->|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
95
|
+
n2["GH_Enterprise"]
|
|
96
|
+
n3["GH_EnterpriseTeam"]
|
|
97
|
+
n4["GH_OrgRole"]
|
|
98
|
+
n5["GH_AppInstallation"]
|
|
99
|
+
n6["GH_OrgRunnerGroup"]
|
|
100
|
+
n7["GH_OrgSecret"]
|
|
101
|
+
n8["GH_OrgVariable"]
|
|
102
|
+
n9["GH_PersonalAccessToken"]
|
|
103
|
+
n10["GH_PersonalAccessTokenRequest"]
|
|
104
|
+
n11["GH_Repository"]
|
|
105
|
+
n12["GH_SamlIdentityProvider"]
|
|
106
|
+
n13["GH_SecretScanningAlert"]
|
|
107
|
+
n0 -.->|GH_AuthorizedForOrganization| n1
|
|
108
|
+
n2 -.->|GH_Contains| n1
|
|
109
|
+
n3 -.->|GH_AssignedTo| n1
|
|
110
|
+
n4 -.->|GH_AddCollaborator| n1
|
|
111
|
+
n4 -.->|GH_CanCreateInternalRepositories| n1
|
|
112
|
+
n4 -.->|GH_CanCreatePrivateRepositories| n1
|
|
113
|
+
n4 -.->|GH_CanCreatePublicRepositories| n1
|
|
114
|
+
n4 -.->|GH_CanCreateRepositories| n1
|
|
115
|
+
n4 -.->|GH_CreateTeam| n1
|
|
116
|
+
n4 -.->|GH_InviteMember| n1
|
|
117
|
+
n4 -.->|GH_ResolveSecretScanningAlerts| n1
|
|
118
|
+
n4 -.->|GH_TransferRepository| n1
|
|
119
|
+
n4 -.->|GH_ViewSecretScanningAlerts| n1
|
|
120
120
|
n1 -.->|GH_Contains| n5
|
|
121
|
+
n1 -.->|GH_Contains| n4
|
|
121
122
|
n1 -.->|GH_Contains| n6
|
|
122
123
|
n1 -.->|GH_Contains| n7
|
|
123
124
|
n1 -.->|GH_Contains| n8
|
|
124
125
|
n1 -.->|GH_Contains| n9
|
|
125
|
-
n1
|
|
126
|
-
n1
|
|
127
|
-
n1 -.->|
|
|
128
|
-
|
|
126
|
+
n1 -.->|GH_Contains| n10
|
|
127
|
+
n1 -->|GH_Owns| n11
|
|
128
|
+
n1 -.->|GH_HasSamlIdentityProvider| n12
|
|
129
|
+
n1 -.->|GH_Contains| n13
|
|
130
|
+
n9 -.->|GH_CanAccess| n1
|
|
129
131
|
```
|
|
@@ -36,14 +36,15 @@ graph LR
|
|
|
36
36
|
n4["GH_SecretScanningAlert"]
|
|
37
37
|
n5["GH_Branch"]
|
|
38
38
|
n6["GH_BranchProtectionRule"]
|
|
39
|
-
n7["
|
|
40
|
-
n8["
|
|
41
|
-
n9["
|
|
42
|
-
n10["
|
|
43
|
-
n11["
|
|
44
|
-
n12["
|
|
45
|
-
n13["
|
|
46
|
-
n14["
|
|
39
|
+
n7["GH_ClassicPersonalAccessToken"]
|
|
40
|
+
n8["GH_DeployKey"]
|
|
41
|
+
n9["GH_EnterpriseRole"]
|
|
42
|
+
n10["GH_Environment"]
|
|
43
|
+
n11["GH_OrgRole"]
|
|
44
|
+
n12["GH_PersonalAccessToken"]
|
|
45
|
+
n13["GH_PersonalAccessTokenRequest"]
|
|
46
|
+
n14["GH_RepoRole"]
|
|
47
|
+
n15["GH_TeamRole"]
|
|
47
48
|
n0 -.->|GH_HasMember| n1
|
|
48
49
|
n2 -.->|GH_MapsToUser| n1
|
|
49
50
|
n3 -.->|GH_MapsToUser| n1
|
|
@@ -51,13 +52,14 @@ graph LR
|
|
|
51
52
|
n1 -.->|GH_CanWriteBranch| n5
|
|
52
53
|
n1 -.->|GH_BypassPullRequestAllowances| n6
|
|
53
54
|
n1 -.->|GH_RestrictionsCanPush| n6
|
|
54
|
-
n1 -.->|
|
|
55
|
-
n1
|
|
56
|
-
n1
|
|
57
|
-
n1
|
|
58
|
-
n1 -->|
|
|
59
|
-
n1
|
|
60
|
-
n1 -.->|
|
|
61
|
-
n1
|
|
55
|
+
n1 -.->|GH_HasPersonalAccessToken| n7
|
|
56
|
+
n1 -.->|GH_AddedDeployKey| n8
|
|
57
|
+
n1 -->|GH_HasRole| n9
|
|
58
|
+
n1 -.->|GH_ApprovesDeploymentTo| n10
|
|
59
|
+
n1 -->|GH_CanDeployToEnvironment| n10
|
|
60
|
+
n1 -->|GH_HasRole| n11
|
|
61
|
+
n1 -.->|GH_HasPersonalAccessToken| n12
|
|
62
|
+
n1 -.->|GH_HasPersonalAccessTokenRequest| n13
|
|
62
63
|
n1 -->|GH_HasRole| n14
|
|
64
|
+
n1 -->|GH_HasRole| n15
|
|
63
65
|
```
|
|
@@ -40,7 +40,7 @@ Use the runner interception searches as a progression:
|
|
|
40
40
|
| 1 | `active-leaked-secrets.json` | Active Leaked Secrets | Finds secret scanning alerts that are both unresolved and confirmed active. These are valid, usable credentials committed to source code and represent an immediate compromise risk. |
|
|
41
41
|
| 2 | `secret-scanning-alerts.json` | Secret Scanning Alerts | Returns all repositories that have open secret scanning alerts. |
|
|
42
42
|
| 3 | `pats-all-repo-access.json` | PATs with Access to All Repositories | Finds fine-grained personal access tokens scoped to all repositories. A single compromised token grants access to every repository in the organization. |
|
|
43
|
-
| 4 | `expired-pats.json` | Expired Personal Access Tokens | Finds expired personal access tokens
|
|
43
|
+
| 4 | `expired-pats.json` | Expired Personal Access Tokens | Finds expired fine-grained and classic personal access tokens, including tokens whose owner could not be resolved. Expired tokens should be cleaned up to reduce credential inventory and audit noise. |
|
|
44
44
|
| 5 | `pending-pat-requests.json` | Pending PAT Requests | Finds pending fine-grained personal access token requests awaiting approval. Review these to ensure requested permissions are appropriate before granting access. |
|
|
45
45
|
|
|
46
46
|
### :orange_circle: High — Organization Security Posture
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Expired Personal Access Tokens",
|
|
3
|
+
"query": "MATCH (token)\nWHERE (token:GH_PersonalAccessToken AND token.token_expired = true) OR (token:GH_ClassicPersonalAccessToken AND token.credential_state = 'expired')\nOPTIONAL MATCH p=(:GH_User)-[:GH_HasPersonalAccessToken]->(token)\nRETURN token, p\nLIMIT 1000",
|
|
4
|
+
"description": "Finds expired fine-grained and classic personal access tokens, including tokens whose owner could not be resolved. Expired tokens should be cleaned up to reduce credential inventory and audit noise."
|
|
5
|
+
}
|
|
@@ -76,6 +76,13 @@
|
|
|
76
76
|
"markdown": {
|
|
77
77
|
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_Enterprise {objectid: '%s'})-[:GH_HasSamlIdentityProvider]->(idp:GH_SamlIdentityProvider)\\nOPTIONAL MATCH p1 = (idp)-[:GH_HasExternalIdentity]->(:GH_ExternalIdentity)-[:GH_MapsToUser]->(:GH_User)\\nRETURN p, p1\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View the identity provider and mapped users for this enterprise in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
78
78
|
}
|
|
79
|
+
},
|
|
80
|
+
"classic_personal_access_tokens": {
|
|
81
|
+
"title": "Classic Personal Access Tokens",
|
|
82
|
+
"position": 10,
|
|
83
|
+
"markdown": {
|
|
84
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_Enterprise {objectid: '%s'})-[:GH_Contains]->(:GH_ClassicPersonalAccessToken)\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View classic personal access tokens in this enterprise in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
85
|
+
}
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
},
|
|
@@ -305,6 +312,13 @@
|
|
|
305
312
|
"markdown": {
|
|
306
313
|
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_Organization {objectid: '%s'})-[:GH_HasSamlIdentityProvider]->(idp:GH_SamlIdentityProvider)\\nOPTIONAL MATCH p1 = (idp)-[:GH_HasExternalIdentity]->(:GH_ExternalIdentity)-[:GH_MapsToUser]->(:GH_User)\\nRETURN p, p1\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View the identity provider and mapped users for this organization in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
307
314
|
}
|
|
315
|
+
},
|
|
316
|
+
"classic_pat_authorizations": {
|
|
317
|
+
"title": "Classic PAT Authorizations",
|
|
318
|
+
"position": 9,
|
|
319
|
+
"markdown": {
|
|
320
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (:GH_ClassicPersonalAccessToken)-[:GH_AuthorizedForOrganization]->(selected:GH_Organization {objectid: '%s'})\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View classic PATs authorized for this organization in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
321
|
+
}
|
|
308
322
|
}
|
|
309
323
|
}
|
|
310
324
|
},
|
|
@@ -1759,6 +1773,51 @@
|
|
|
1759
1773
|
}
|
|
1760
1774
|
}
|
|
1761
1775
|
},
|
|
1776
|
+
{
|
|
1777
|
+
"name": "GH_ClassicPersonalAccessToken",
|
|
1778
|
+
"display_name": "GitHub Classic Personal Access Token",
|
|
1779
|
+
"description": "A classic personal access token found in the enterprise credential inventory",
|
|
1780
|
+
"is_display_kind": true,
|
|
1781
|
+
"icon": "key",
|
|
1782
|
+
"color": "#F5A623",
|
|
1783
|
+
"info": {
|
|
1784
|
+
"description": {
|
|
1785
|
+
"title": "Description",
|
|
1786
|
+
"position": 1,
|
|
1787
|
+
"markdown": {
|
|
1788
|
+
"content": "## Overview\n\nRepresents a classic personal access token reported by the enterprise credential inventory. Organization edges record authorizations, while token scopes and owner permissions determine what the credential can do. Repository access is not enumerated by the inventory."
|
|
1789
|
+
}
|
|
1790
|
+
},
|
|
1791
|
+
"inbound_traversable_relationships": {
|
|
1792
|
+
"title": "Inbound Traversable GH Relationships",
|
|
1793
|
+
"position": 2,
|
|
1794
|
+
"markdown": {
|
|
1795
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_ClassicPersonalAccessToken {objectid: '%s'})\\nWHERE false\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View direct inbound relationships in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
1796
|
+
}
|
|
1797
|
+
},
|
|
1798
|
+
"outbound_traversable_relationships": {
|
|
1799
|
+
"title": "Outbound Traversable GH Relationships",
|
|
1800
|
+
"position": 3,
|
|
1801
|
+
"markdown": {
|
|
1802
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_ClassicPersonalAccessToken {objectid: '%s'})\\nWHERE false\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View direct outbound relationships in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
1803
|
+
}
|
|
1804
|
+
},
|
|
1805
|
+
"owner": {
|
|
1806
|
+
"title": "Owner",
|
|
1807
|
+
"position": 4,
|
|
1808
|
+
"markdown": {
|
|
1809
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (:GH_User)-[:GH_HasPersonalAccessToken]->(selected:GH_ClassicPersonalAccessToken {objectid: '%s'})\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View the owner of this personal access token in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
1810
|
+
}
|
|
1811
|
+
},
|
|
1812
|
+
"organization_scope": {
|
|
1813
|
+
"title": "Organization Scope",
|
|
1814
|
+
"position": 5,
|
|
1815
|
+
"markdown": {
|
|
1816
|
+
"content": "{{ $objectID := .Properties.objectid | default \"\" | trim }}\n{{ $escapedObjectID := $objectID | replace \"\\\\\" \"\\\\\\\\\" | replace \"'\" \"\\\\'\" }}\n{{ if ne $objectID \"\" }}\n{{ $query := printf \"MATCH p = (selected:GH_ClassicPersonalAccessToken {objectid: '%s'})-[:GH_AuthorizedForOrganization]->(:GH_Organization)\\nRETURN p\\nLIMIT 500\" $escapedObjectID }}\n{{ $encodedQuery := $query | b64enc | urlquery }}\n[View organizations authorizing this token in Explore](/ui/explore?exploreSearchTab=cypher&searchType=cypher&cypherSearch={{ $encodedQuery }})\n{{ else }}\nExplore navigation is unavailable because this object has no stable identifier.\n{{ end }}"
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
},
|
|
1762
1821
|
{
|
|
1763
1822
|
"name": "GH_PersonalAccessToken",
|
|
1764
1823
|
"display_name": "GitHub Personal Access Token",
|
|
@@ -2490,7 +2549,7 @@
|
|
|
2490
2549
|
},
|
|
2491
2550
|
{
|
|
2492
2551
|
"name": "GH_HasPersonalAccessToken",
|
|
2493
|
-
"description": "User owns
|
|
2552
|
+
"description": "User owns a personal access token reported by GitHub",
|
|
2494
2553
|
"is_traversable": false
|
|
2495
2554
|
},
|
|
2496
2555
|
{
|
|
@@ -2503,6 +2562,11 @@
|
|
|
2503
2562
|
"description": "GitHub App is installed as this app installation on an organization",
|
|
2504
2563
|
"is_traversable": true
|
|
2505
2564
|
},
|
|
2565
|
+
{
|
|
2566
|
+
"name": "GH_AuthorizedForOrganization",
|
|
2567
|
+
"description": "Classic personal access token has a recorded authorization for this organization",
|
|
2568
|
+
"is_traversable": false
|
|
2569
|
+
},
|
|
2506
2570
|
{
|
|
2507
2571
|
"name": "GH_CanAccess",
|
|
2508
2572
|
"description": "Personal access token, app installation, or deploy key can access this repository or organization",
|