openhound-github 0.1.0__tar.gz → 0.3.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.
Files changed (448) hide show
  1. {openhound_github-0.1.0 → openhound_github-0.3.0}/.gitignore +4 -0
  2. openhound_github-0.3.0/.gitmodules +3 -0
  3. {openhound_github-0.1.0 → openhound_github-0.3.0}/PKG-INFO +2 -2
  4. openhound_github-0.3.0/descriptions/edges/GH_AddAssignee.md +3 -0
  5. openhound_github-0.3.0/descriptions/edges/GH_AddCollaborator.md +3 -0
  6. openhound_github-0.1.0/descriptions/edges/GH_ReopenPullRequest.md → openhound_github-0.3.0/descriptions/edges/GH_AddLabel.md +1 -1
  7. openhound_github-0.3.0/descriptions/edges/GH_AddMember.md +3 -0
  8. openhound_github-0.3.0/descriptions/edges/GH_AdminTo.md +3 -0
  9. openhound_github-0.3.0/descriptions/edges/GH_BypassBranchProtection.md +3 -0
  10. openhound_github-0.3.0/descriptions/edges/GH_BypassPullRequestAllowances.md +3 -0
  11. openhound_github-0.3.0/descriptions/edges/GH_CallsWorkflow.md +10 -0
  12. openhound_github-0.3.0/descriptions/edges/GH_CanAccess.md +3 -0
  13. openhound_github-0.3.0/descriptions/edges/GH_CanAssumeIdentity.md +3 -0
  14. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/edges/GH_CanCreateBranch.md +3 -3
  15. openhound_github-0.3.0/descriptions/edges/GH_CanEditProtection.md +31 -0
  16. openhound_github-0.3.0/descriptions/edges/GH_CanPwnRequest.md +59 -0
  17. openhound_github-0.3.0/descriptions/edges/GH_CanReadSecretScanningAlert.md +31 -0
  18. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/edges/GH_CanWriteBranch.md +4 -4
  19. openhound_github-0.3.0/descriptions/edges/GH_CloseDiscussion.md +3 -0
  20. openhound_github-0.3.0/descriptions/edges/GH_CloseIssue.md +3 -0
  21. openhound_github-0.3.0/descriptions/edges/GH_ClosePullRequest.md +3 -0
  22. openhound_github-0.3.0/descriptions/edges/GH_Contains.md +3 -0
  23. openhound_github-0.3.0/descriptions/edges/GH_ConvertIssuesToDiscussions.md +3 -0
  24. openhound_github-0.1.0/descriptions/edges/GH_RemoveLabel.md → openhound_github-0.3.0/descriptions/edges/GH_CreateDiscussionCategory.md +1 -1
  25. openhound_github-0.3.0/descriptions/edges/GH_CreateRepository.md +3 -0
  26. openhound_github-0.3.0/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +3 -0
  27. openhound_github-0.3.0/descriptions/edges/GH_CreateTag.md +3 -0
  28. openhound_github-0.3.0/descriptions/edges/GH_CreateTeam.md +3 -0
  29. openhound_github-0.3.0/descriptions/edges/GH_DeleteAlertsCodeScanning.md +3 -0
  30. openhound_github-0.3.0/descriptions/edges/GH_DeleteDiscussion.md +3 -0
  31. openhound_github-0.3.0/descriptions/edges/GH_DeleteDiscussionComment.md +3 -0
  32. openhound_github-0.3.0/descriptions/edges/GH_DeleteIssue.md +3 -0
  33. openhound_github-0.3.0/descriptions/edges/GH_DeleteTag.md +3 -0
  34. openhound_github-0.3.0/descriptions/edges/GH_DependsOn.md +3 -0
  35. openhound_github-0.3.0/descriptions/edges/GH_DeploysTo.md +3 -0
  36. openhound_github-0.3.0/descriptions/edges/GH_EditCategoryOnDiscussion.md +3 -0
  37. openhound_github-0.3.0/descriptions/edges/GH_EditDiscussionCategory.md +3 -0
  38. openhound_github-0.3.0/descriptions/edges/GH_EditDiscussionComment.md +3 -0
  39. openhound_github-0.3.0/descriptions/edges/GH_EditRepoAnnouncementBanners.md +3 -0
  40. openhound_github-0.3.0/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +3 -0
  41. openhound_github-0.3.0/descriptions/edges/GH_EditRepoMetadata.md +3 -0
  42. openhound_github-0.3.0/descriptions/edges/GH_EditRepoProtections.md +3 -0
  43. openhound_github-0.3.0/descriptions/edges/GH_HasBaseRole.md +3 -0
  44. openhound_github-0.3.0/descriptions/edges/GH_HasBranch.md +3 -0
  45. openhound_github-0.3.0/descriptions/edges/GH_HasEnvironment.md +3 -0
  46. openhound_github-0.3.0/descriptions/edges/GH_HasExternalIdentity.md +3 -0
  47. openhound_github-0.3.0/descriptions/edges/GH_HasJob.md +3 -0
  48. openhound_github-0.3.0/descriptions/edges/GH_HasMember.md +3 -0
  49. openhound_github-0.3.0/descriptions/edges/GH_HasPersonalAccessToken.md +3 -0
  50. openhound_github-0.3.0/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +3 -0
  51. openhound_github-0.3.0/descriptions/edges/GH_HasRole.md +3 -0
  52. openhound_github-0.3.0/descriptions/edges/GH_HasSamlIdentityProvider.md +3 -0
  53. openhound_github-0.3.0/descriptions/edges/GH_HasSecret.md +3 -0
  54. openhound_github-0.3.0/descriptions/edges/GH_HasStep.md +3 -0
  55. openhound_github-0.3.0/descriptions/edges/GH_HasVariable.md +3 -0
  56. openhound_github-0.3.0/descriptions/edges/GH_HasWorkflow.md +3 -0
  57. openhound_github-0.3.0/descriptions/edges/GH_InstalledAs.md +3 -0
  58. openhound_github-0.3.0/descriptions/edges/GH_InviteMember.md +3 -0
  59. openhound_github-0.3.0/descriptions/edges/GH_JumpMergeQueue.md +3 -0
  60. openhound_github-0.3.0/descriptions/edges/GH_ManageDeployKeys.md +3 -0
  61. openhound_github-0.3.0/descriptions/edges/GH_ManageDiscussionBadges.md +3 -0
  62. openhound_github-0.3.0/descriptions/edges/GH_ManageOrganizationWebhooks.md +3 -0
  63. openhound_github-0.3.0/descriptions/edges/GH_ManageRepoSecurityProducts.md +3 -0
  64. openhound_github-0.3.0/descriptions/edges/GH_ManageSecurityProducts.md +3 -0
  65. openhound_github-0.3.0/descriptions/edges/GH_ManageSettingsMergeTypes.md +3 -0
  66. openhound_github-0.3.0/descriptions/edges/GH_ManageSettingsPages.md +3 -0
  67. openhound_github-0.3.0/descriptions/edges/GH_ManageSettingsProjects.md +3 -0
  68. openhound_github-0.3.0/descriptions/edges/GH_ManageSettingsWiki.md +3 -0
  69. openhound_github-0.3.0/descriptions/edges/GH_ManageTopics.md +3 -0
  70. openhound_github-0.3.0/descriptions/edges/GH_ManageWebhooks.md +3 -0
  71. openhound_github-0.3.0/descriptions/edges/GH_MapsToUser.md +3 -0
  72. openhound_github-0.3.0/descriptions/edges/GH_MarkAsDuplicate.md +3 -0
  73. openhound_github-0.3.0/descriptions/edges/GH_MemberOf.md +3 -0
  74. openhound_github-0.3.0/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +3 -0
  75. openhound_github-0.3.0/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +3 -0
  76. openhound_github-0.3.0/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +3 -0
  77. openhound_github-0.3.0/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +3 -0
  78. openhound_github-0.3.0/descriptions/edges/GH_Owns.md +3 -0
  79. openhound_github-0.3.0/descriptions/edges/GH_ProtectedBy.md +3 -0
  80. openhound_github-0.3.0/descriptions/edges/GH_PushProtectedBranch.md +3 -0
  81. openhound_github-0.3.0/descriptions/edges/GH_ReadCodeScanning.md +3 -0
  82. openhound_github-0.3.0/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +3 -0
  83. openhound_github-0.3.0/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +3 -0
  84. openhound_github-0.3.0/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +3 -0
  85. openhound_github-0.3.0/descriptions/edges/GH_ReadRepoContents.md +3 -0
  86. openhound_github-0.3.0/descriptions/edges/GH_RemoveAssignee.md +3 -0
  87. openhound_github-0.3.0/descriptions/edges/GH_RemoveLabel.md +3 -0
  88. openhound_github-0.3.0/descriptions/edges/GH_ReopenDiscussion.md +3 -0
  89. openhound_github-0.3.0/descriptions/edges/GH_ReopenIssue.md +3 -0
  90. openhound_github-0.3.0/descriptions/edges/GH_ReopenPullRequest.md +3 -0
  91. openhound_github-0.3.0/descriptions/edges/GH_RequestPrReview.md +3 -0
  92. openhound_github-0.3.0/descriptions/edges/GH_ResolveDependabotAlerts.md +3 -0
  93. openhound_github-0.3.0/descriptions/edges/GH_ResolveSecretScanningAlerts.md +3 -0
  94. openhound_github-0.3.0/descriptions/edges/GH_RestrictionsCanPush.md +3 -0
  95. openhound_github-0.3.0/descriptions/edges/GH_RunOrgMigration.md +3 -0
  96. openhound_github-0.3.0/descriptions/edges/GH_SetInteractionLimits.md +3 -0
  97. openhound_github-0.3.0/descriptions/edges/GH_SetIssueType.md +3 -0
  98. openhound_github-0.3.0/descriptions/edges/GH_SetMilestone.md +3 -0
  99. openhound_github-0.3.0/descriptions/edges/GH_SetSocialPreview.md +3 -0
  100. openhound_github-0.3.0/descriptions/edges/GH_SyncedTo.md +3 -0
  101. openhound_github-0.3.0/descriptions/edges/GH_ToggleDiscussionAnswer.md +3 -0
  102. openhound_github-0.3.0/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +3 -0
  103. openhound_github-0.3.0/descriptions/edges/GH_TransferRepository.md +3 -0
  104. openhound_github-0.3.0/descriptions/edges/GH_UsesSecret.md +19 -0
  105. openhound_github-0.3.0/descriptions/edges/GH_UsesVariable.md +19 -0
  106. openhound_github-0.3.0/descriptions/edges/GH_ValidToken.md +3 -0
  107. openhound_github-0.3.0/descriptions/edges/GH_ViewDependabotAlerts.md +3 -0
  108. openhound_github-0.3.0/descriptions/edges/GH_ViewSecretScanningAlerts.md +3 -0
  109. openhound_github-0.3.0/descriptions/edges/GH_WriteCodeScanning.md +3 -0
  110. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +3 -0
  111. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationActionsSettings.md +3 -0
  112. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationActionsVariables.md +3 -0
  113. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +3 -0
  114. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +3 -0
  115. openhound_github-0.3.0/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +3 -0
  116. openhound_github-0.3.0/descriptions/edges/GH_WriteRepoContents.md +3 -0
  117. openhound_github-0.3.0/descriptions/edges/GH_WriteRepoPullRequests.md +3 -0
  118. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_App.md +1 -1
  119. openhound_github-0.3.0/descriptions/nodes/GH_AppInstallation.md +5 -0
  120. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Branch.md +1 -1
  121. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_BranchProtectionRule.md +10 -10
  122. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_RepoRole.md +1 -1
  123. openhound_github-0.3.0/descriptions/nodes/GH_WorkflowJob.md +3 -0
  124. openhound_github-0.3.0/descriptions/nodes/GH_WorkflowStep.md +3 -0
  125. openhound_github-0.3.0/docs/og-docs.json +14 -0
  126. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +1 -1
  127. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +1 -1
  128. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-apps-all-repos.json +1 -1
  129. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +1 -1
  130. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-organizations.json +1 -1
  131. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-owner-users.json +1 -1
  132. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-owners-role.json +1 -1
  133. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-pats-all-repos.json +1 -1
  134. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +1 -1
  135. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +1 -1
  136. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +1 -1
  137. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/README.md +1 -1
  138. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/actions-sha-pinning-not-required.json +2 -2
  139. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/active-leaked-secrets.json +2 -2
  140. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +2 -2
  141. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/all-actions-allowed.json +2 -2
  142. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/app-installations-all-repos.json +2 -2
  143. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +2 -2
  144. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-deletions-allowed.json +2 -2
  145. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-force-pushes.json +2 -2
  146. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +2 -2
  147. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +2 -2
  148. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-no-status-checks.json +2 -2
  149. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-self-approval.json +2 -2
  150. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/branch-protection-stale-reviews.json +2 -2
  151. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/bypass-pr-requirements.json +2 -2
  152. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/dangerous-branch-perms.json +2 -2
  153. openhound_github-0.3.0/extension/saved_searches/default-repository-permissions.json +5 -0
  154. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +2 -2
  155. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +2 -2
  156. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +2 -2
  157. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +2 -2
  158. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/environments-admin-bypass.json +2 -2
  159. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/expired-pats.json +2 -2
  160. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/external-identities-without-scim.json +2 -2
  161. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/github-to-azure-identity.json +2 -2
  162. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/global-repo-perms.json +2 -2
  163. openhound_github-0.3.0/extension/saved_searches/hybrid-identities.json +5 -0
  164. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-change-repo-visibility.json +2 -2
  165. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-create-pages.json +2 -2
  166. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-create-public-repos.json +2 -2
  167. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-delete-repos.json +2 -2
  168. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-fork-private-repos.json +2 -2
  169. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +2 -2
  170. openhound_github-0.3.0/extension/saved_searches/org-owners.json +5 -0
  171. openhound_github-0.3.0/extension/saved_searches/orgs-without-2fa.json +5 -0
  172. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/pats-all-repo-access.json +2 -2
  173. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/pending-pat-requests.json +2 -2
  174. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/private-repos-forking-allowed.json +2 -2
  175. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/privileged-custom-org-roles.json +2 -2
  176. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/privileged-hybrid-identities.json +2 -2
  177. openhound_github-0.3.0/extension/saved_searches/public-repos.json +5 -0
  178. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/push-protection-disabled-new-repos.json +2 -2
  179. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/push-to-protected-branches.json +2 -2
  180. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/repos-secret-scanning-disabled.json +2 -2
  181. openhound_github-0.3.0/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +5 -0
  182. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/repository-workflows.json +2 -2
  183. openhound_github-0.3.0/extension/saved_searches/saml-configuration.json +5 -0
  184. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/secret-scanning-alerts.json +2 -2
  185. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +2 -2
  186. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/secrets-reachable-by-user.json +2 -2
  187. openhound_github-0.3.0/extension/saved_searches/team-membership-admin.json +5 -0
  188. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/team-structure.json +2 -2
  189. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/unprotected-branches.json +2 -2
  190. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +2 -2
  191. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/unprotected-default-branches.json +2 -2
  192. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/saved_searches/web-commit-signoff-not-required.json +2 -2
  193. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension/schema.json +60 -4
  194. openhound_github-0.3.0/justfile +17 -0
  195. {openhound_github-0.1.0 → openhound_github-0.3.0}/pyproject.toml +2 -2
  196. openhound_github-0.3.0/src/openhound_github/auth.py +182 -0
  197. openhound_github-0.3.0/src/openhound_github/graphql.py +419 -0
  198. openhound_github-0.3.0/src/openhound_github/helpers.py +208 -0
  199. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/kinds/edges.py +20 -0
  200. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/kinds/nodes.py +15 -0
  201. openhound_github-0.3.0/src/openhound_github/lookup.py +441 -0
  202. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/main.py +18 -3
  203. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/__init__.py +49 -4
  204. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/actions_permission.py +4 -1
  205. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/app_installation.py +102 -142
  206. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/branch.py +29 -22
  207. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/branch_protection_rule.py +51 -86
  208. openhound_github-0.3.0/src/openhound_github/models/enterprise.py +110 -0
  209. openhound_github-0.3.0/src/openhound_github/models/enterprise_admin.py +21 -0
  210. openhound_github-0.3.0/src/openhound_github/models/enterprise_external_identity.py +202 -0
  211. openhound_github-0.3.0/src/openhound_github/models/enterprise_helpers.py +6 -0
  212. openhound_github-0.3.0/src/openhound_github/models/enterprise_managed_user.py +131 -0
  213. openhound_github-0.3.0/src/openhound_github/models/enterprise_member.py +63 -0
  214. openhound_github-0.3.0/src/openhound_github/models/enterprise_organization.py +79 -0
  215. openhound_github-0.3.0/src/openhound_github/models/enterprise_role.py +120 -0
  216. openhound_github-0.3.0/src/openhound_github/models/enterprise_role_team.py +47 -0
  217. openhound_github-0.3.0/src/openhound_github/models/enterprise_role_user.py +45 -0
  218. openhound_github-0.3.0/src/openhound_github/models/enterprise_saml_provider.py +122 -0
  219. openhound_github-0.3.0/src/openhound_github/models/enterprise_team.py +116 -0
  220. openhound_github-0.3.0/src/openhound_github/models/enterprise_team_member.py +45 -0
  221. openhound_github-0.3.0/src/openhound_github/models/enterprise_team_organization.py +81 -0
  222. openhound_github-0.3.0/src/openhound_github/models/enterprise_team_role.py +97 -0
  223. openhound_github-0.3.0/src/openhound_github/models/enterprise_user.py +96 -0
  224. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/env_secret.py +26 -26
  225. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/env_variable.py +37 -29
  226. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/environment.py +25 -31
  227. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/environment_branch_policy.py +5 -0
  228. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/external_identity.py +44 -46
  229. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org.py +146 -263
  230. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org_role.py +91 -39
  231. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org_role_member.py +3 -2
  232. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org_role_team.py +3 -2
  233. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org_secret.py +98 -43
  234. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/org_variable.py +34 -29
  235. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/personal_access_token.py +63 -58
  236. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/personal_access_token_access.py +6 -2
  237. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/personal_access_token_request.py +32 -33
  238. openhound_github-0.3.0/src/openhound_github/models/projected_enterprise_team.py +61 -0
  239. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/repo_role_assignment.py +5 -0
  240. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/repository.py +108 -107
  241. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/repository_role.py +31 -29
  242. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/repository_secret.py +28 -27
  243. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/repository_variable.py +28 -27
  244. openhound_github-0.3.0/src/openhound_github/models/runner.py +393 -0
  245. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/saml_provider.py +24 -32
  246. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/scim_user.py +4 -1
  247. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/secret_scanning_alert.py +114 -44
  248. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/team.py +44 -34
  249. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/team_member.py +7 -0
  250. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/team_role.py +31 -21
  251. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/user.py +37 -33
  252. openhound_github-0.3.0/src/openhound_github/models/workflow.py +627 -0
  253. openhound_github-0.3.0/src/openhound_github/models/workflow_job.py +387 -0
  254. openhound_github-0.3.0/src/openhound_github/models/workflow_step.py +270 -0
  255. openhound_github-0.3.0/src/openhound_github/resources/__init__.py +2 -0
  256. openhound_github-0.3.0/src/openhound_github/resources/enterprise.py +425 -0
  257. openhound_github-0.1.0/src/openhound_github/source.py → openhound_github-0.3.0/src/openhound_github/resources/organization.py +778 -345
  258. openhound_github-0.3.0/src/openhound_github/source.py +197 -0
  259. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/transforms.py +2 -3
  260. openhound_github-0.3.0/uv.lock +1680 -0
  261. openhound_github-0.1.0/descriptions/edges/GH_AddAssignee.md +0 -3
  262. openhound_github-0.1.0/descriptions/edges/GH_AddCollaborator.md +0 -3
  263. openhound_github-0.1.0/descriptions/edges/GH_AddLabel.md +0 -3
  264. openhound_github-0.1.0/descriptions/edges/GH_AddMember.md +0 -3
  265. openhound_github-0.1.0/descriptions/edges/GH_AdminTo.md +0 -3
  266. openhound_github-0.1.0/descriptions/edges/GH_BypassBranchProtection.md +0 -3
  267. openhound_github-0.1.0/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -3
  268. openhound_github-0.1.0/descriptions/edges/GH_CanAccess.md +0 -3
  269. openhound_github-0.1.0/descriptions/edges/GH_CanAssumeIdentity.md +0 -3
  270. openhound_github-0.1.0/descriptions/edges/GH_CanEditProtection.md +0 -29
  271. openhound_github-0.1.0/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -31
  272. openhound_github-0.1.0/descriptions/edges/GH_CloseDiscussion.md +0 -3
  273. openhound_github-0.1.0/descriptions/edges/GH_CloseIssue.md +0 -3
  274. openhound_github-0.1.0/descriptions/edges/GH_ClosePullRequest.md +0 -3
  275. openhound_github-0.1.0/descriptions/edges/GH_Contains.md +0 -3
  276. openhound_github-0.1.0/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -3
  277. openhound_github-0.1.0/descriptions/edges/GH_CreateDiscussionCategory.md +0 -3
  278. openhound_github-0.1.0/descriptions/edges/GH_CreateRepository.md +0 -3
  279. openhound_github-0.1.0/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -3
  280. openhound_github-0.1.0/descriptions/edges/GH_CreateTag.md +0 -3
  281. openhound_github-0.1.0/descriptions/edges/GH_CreateTeam.md +0 -3
  282. openhound_github-0.1.0/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -3
  283. openhound_github-0.1.0/descriptions/edges/GH_DeleteDiscussion.md +0 -3
  284. openhound_github-0.1.0/descriptions/edges/GH_DeleteDiscussionComment.md +0 -3
  285. openhound_github-0.1.0/descriptions/edges/GH_DeleteIssue.md +0 -3
  286. openhound_github-0.1.0/descriptions/edges/GH_DeleteTag.md +0 -3
  287. openhound_github-0.1.0/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -3
  288. openhound_github-0.1.0/descriptions/edges/GH_EditDiscussionCategory.md +0 -3
  289. openhound_github-0.1.0/descriptions/edges/GH_EditDiscussionComment.md +0 -3
  290. openhound_github-0.1.0/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -3
  291. openhound_github-0.1.0/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -3
  292. openhound_github-0.1.0/descriptions/edges/GH_EditRepoMetadata.md +0 -3
  293. openhound_github-0.1.0/descriptions/edges/GH_EditRepoProtections.md +0 -3
  294. openhound_github-0.1.0/descriptions/edges/GH_HasBaseRole.md +0 -3
  295. openhound_github-0.1.0/descriptions/edges/GH_HasBranch.md +0 -3
  296. openhound_github-0.1.0/descriptions/edges/GH_HasEnvironment.md +0 -3
  297. openhound_github-0.1.0/descriptions/edges/GH_HasExternalIdentity.md +0 -3
  298. openhound_github-0.1.0/descriptions/edges/GH_HasPersonalAccessToken.md +0 -3
  299. openhound_github-0.1.0/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -3
  300. openhound_github-0.1.0/descriptions/edges/GH_HasRole.md +0 -3
  301. openhound_github-0.1.0/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -3
  302. openhound_github-0.1.0/descriptions/edges/GH_HasSecret.md +0 -3
  303. openhound_github-0.1.0/descriptions/edges/GH_HasVariable.md +0 -3
  304. openhound_github-0.1.0/descriptions/edges/GH_HasWorkflow.md +0 -3
  305. openhound_github-0.1.0/descriptions/edges/GH_InstalledAs.md +0 -3
  306. openhound_github-0.1.0/descriptions/edges/GH_InviteMember.md +0 -3
  307. openhound_github-0.1.0/descriptions/edges/GH_JumpMergeQueue.md +0 -3
  308. openhound_github-0.1.0/descriptions/edges/GH_ManageDeployKeys.md +0 -3
  309. openhound_github-0.1.0/descriptions/edges/GH_ManageDiscussionBadges.md +0 -3
  310. openhound_github-0.1.0/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -3
  311. openhound_github-0.1.0/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -3
  312. openhound_github-0.1.0/descriptions/edges/GH_ManageSecurityProducts.md +0 -3
  313. openhound_github-0.1.0/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -3
  314. openhound_github-0.1.0/descriptions/edges/GH_ManageSettingsPages.md +0 -3
  315. openhound_github-0.1.0/descriptions/edges/GH_ManageSettingsProjects.md +0 -3
  316. openhound_github-0.1.0/descriptions/edges/GH_ManageSettingsWiki.md +0 -3
  317. openhound_github-0.1.0/descriptions/edges/GH_ManageTopics.md +0 -3
  318. openhound_github-0.1.0/descriptions/edges/GH_ManageWebhooks.md +0 -3
  319. openhound_github-0.1.0/descriptions/edges/GH_MapsToUser.md +0 -3
  320. openhound_github-0.1.0/descriptions/edges/GH_MarkAsDuplicate.md +0 -3
  321. openhound_github-0.1.0/descriptions/edges/GH_MemberOf.md +0 -3
  322. openhound_github-0.1.0/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -3
  323. openhound_github-0.1.0/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -3
  324. openhound_github-0.1.0/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -3
  325. openhound_github-0.1.0/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -3
  326. openhound_github-0.1.0/descriptions/edges/GH_Owns.md +0 -3
  327. openhound_github-0.1.0/descriptions/edges/GH_ProtectedBy.md +0 -3
  328. openhound_github-0.1.0/descriptions/edges/GH_PushProtectedBranch.md +0 -3
  329. openhound_github-0.1.0/descriptions/edges/GH_ReadCodeScanning.md +0 -3
  330. openhound_github-0.1.0/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -3
  331. openhound_github-0.1.0/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -3
  332. openhound_github-0.1.0/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -3
  333. openhound_github-0.1.0/descriptions/edges/GH_ReadRepoContents.md +0 -7
  334. openhound_github-0.1.0/descriptions/edges/GH_RemoveAssignee.md +0 -3
  335. openhound_github-0.1.0/descriptions/edges/GH_ReopenDiscussion.md +0 -3
  336. openhound_github-0.1.0/descriptions/edges/GH_ReopenIssue.md +0 -3
  337. openhound_github-0.1.0/descriptions/edges/GH_RequestPrReview.md +0 -3
  338. openhound_github-0.1.0/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -3
  339. openhound_github-0.1.0/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -3
  340. openhound_github-0.1.0/descriptions/edges/GH_RestrictionsCanPush.md +0 -3
  341. openhound_github-0.1.0/descriptions/edges/GH_RunOrgMigration.md +0 -3
  342. openhound_github-0.1.0/descriptions/edges/GH_SetInteractionLimits.md +0 -3
  343. openhound_github-0.1.0/descriptions/edges/GH_SetIssueType.md +0 -3
  344. openhound_github-0.1.0/descriptions/edges/GH_SetMilestone.md +0 -3
  345. openhound_github-0.1.0/descriptions/edges/GH_SetSocialPreview.md +0 -3
  346. openhound_github-0.1.0/descriptions/edges/GH_SyncedTo.md +0 -3
  347. openhound_github-0.1.0/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -3
  348. openhound_github-0.1.0/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -3
  349. openhound_github-0.1.0/descriptions/edges/GH_TransferRepository.md +0 -3
  350. openhound_github-0.1.0/descriptions/edges/GH_ValidToken.md +0 -3
  351. openhound_github-0.1.0/descriptions/edges/GH_ViewDependabotAlerts.md +0 -3
  352. openhound_github-0.1.0/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -3
  353. openhound_github-0.1.0/descriptions/edges/GH_WriteCodeScanning.md +0 -3
  354. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -3
  355. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -3
  356. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -3
  357. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -3
  358. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -3
  359. openhound_github-0.1.0/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -3
  360. openhound_github-0.1.0/descriptions/edges/GH_WriteRepoContents.md +0 -3
  361. openhound_github-0.1.0/descriptions/edges/GH_WriteRepoPullRequests.md +0 -3
  362. openhound_github-0.1.0/descriptions/nodes/GH_AppInstallation.md +0 -5
  363. openhound_github-0.1.0/extension/saved_searches/default-repository-permissions.json +0 -5
  364. openhound_github-0.1.0/extension/saved_searches/hybrid-identities.json +0 -5
  365. openhound_github-0.1.0/extension/saved_searches/org-owners.json +0 -5
  366. openhound_github-0.1.0/extension/saved_searches/orgs-without-2fa.json +0 -5
  367. openhound_github-0.1.0/extension/saved_searches/public-repos.json +0 -5
  368. openhound_github-0.1.0/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -5
  369. openhound_github-0.1.0/extension/saved_searches/saml-configuration.json +0 -5
  370. openhound_github-0.1.0/extension/saved_searches/team-membership-admin.json +0 -5
  371. openhound_github-0.1.0/justfile +0 -17
  372. openhound_github-0.1.0/src/openhound_github/auth.py +0 -220
  373. openhound_github-0.1.0/src/openhound_github/graphql.py +0 -214
  374. openhound_github-0.1.0/src/openhound_github/helpers.py +0 -49
  375. openhound_github-0.1.0/src/openhound_github/lookup.py +0 -193
  376. openhound_github-0.1.0/src/openhound_github/models/workflow.py +0 -143
  377. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/CODE_OF_CONDUCT.md +0 -0
  378. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/CONTRIBUTING.md +0 -0
  379. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GOVERNANCE.md +0 -0
  380. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-COC-Header.png +0 -0
  381. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-CONTRIB-Header.png +0 -0
  382. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-GOV-Header.png +0 -0
  383. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-Header.png +0 -0
  384. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-LIC-Header.png +0 -0
  385. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/GitHub-SEC-Header.png +0 -0
  386. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/SECURITY.md +0 -0
  387. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/SO-Dark.svg +0 -0
  388. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/SO-FOSS-Dark.svg +0 -0
  389. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/SO-FOSS-Light.svg +0 -0
  390. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/SO-Light.svg +0 -0
  391. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/workflows/publish.yml +0 -0
  392. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/workflows/release-on-merge.yml +0 -0
  393. {openhound_github-0.1.0 → openhound_github-0.3.0}/.github/workflows/validate-branch.yml +0 -0
  394. {openhound_github-0.1.0 → openhound_github-0.3.0}/.pre-commit-config.yaml +0 -0
  395. {openhound_github-0.1.0 → openhound_github-0.3.0}/LICENSE.md +0 -0
  396. {openhound_github-0.1.0 → openhound_github-0.3.0}/README.md +0 -0
  397. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Environment.md +0 -0
  398. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  399. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  400. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  401. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_OrgRole.md +0 -0
  402. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_OrgSecret.md +0 -0
  403. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
  404. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Organization.md +0 -0
  405. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  406. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  407. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_RepoSecret.md +0 -0
  408. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
  409. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Repository.md +0 -0
  410. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  411. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  412. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Team.md +0 -0
  413. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_TeamRole.md +0 -0
  414. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_User.md +0 -0
  415. {openhound_github-0.1.0 → openhound_github-0.3.0}/descriptions/nodes/GH_Workflow.md +0 -0
  416. {openhound_github-0.1.0 → openhound_github-0.3.0}/extension.yaml +0 -0
  417. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/main.py +0 -0
  418. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/__init__.py +0 -0
  419. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/graph.py +0 -0
  420. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  421. {openhound_github-0.1.0 → openhound_github-0.3.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
  422. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/actions-permissions.json +0 -0
  423. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/actionsecrets.json +0 -0
  424. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/app.json +0 -0
  425. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/appinstalls.json +0 -0
  426. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/branch-policies.json +0 -0
  427. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/branch-prot-rules.json +0 -0
  428. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/branches.json +0 -0
  429. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/custom-roles.json +0 -0
  430. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/environments.json +0 -0
  431. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org-pat-request.json +0 -0
  432. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org-pat.json +0 -0
  433. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org-role-teams.json +0 -0
  434. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org-role-users.json +0 -0
  435. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org-roles.json +0 -0
  436. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/org.json +0 -0
  437. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/pat-repositories.json +0 -0
  438. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/repo-collaborators.json +0 -0
  439. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/repo-teams.json +0 -0
  440. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/repositories.json +0 -0
  441. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/scimusers.json +0 -0
  442. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/secrets.json +0 -0
  443. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/secretscanningalert.json +0 -0
  444. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/selected-org-secrets.json +0 -0
  445. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/variables.json +0 -0
  446. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_data/api/workflows.json +0 -0
  447. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_github_rest_client.py +0 -0
  448. {openhound_github-0.1.0 → openhound_github-0.3.0}/tests/test_github_retry.py +0 -0
@@ -1,6 +1,7 @@
1
1
  # Custom
2
2
  *.duckdb
3
3
  ui_catalog.db
4
+ docs/official-docs/
4
5
  site/
5
6
  addons/
6
7
  collectors/
@@ -13,6 +14,9 @@ dbt_packages
13
14
  *.pem
14
15
  source
15
16
 
17
+ # Codex
18
+ .codex
19
+
16
20
  # Byte-compiled / optimized / DLL files
17
21
  __pycache__/
18
22
  *.py[codz]
@@ -0,0 +1,3 @@
1
+ [submodule "docs/og-docs-automation"]
2
+ path = docs/og-docs-automation
3
+ url = https://github.com/SpecterOps/og-docs-automation
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhound-github
3
- Version: 0.1.0
3
+ Version: 0.3.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
7
7
  Requires-Python: >=3.13
8
- Requires-Dist: cryptography>=46.0.6
8
+ Requires-Dist: joserfc>=1.6.5
9
9
  Requires-Dist: requests>=2.33.0
10
10
  Description-Content-Type: text/markdown
11
11
 
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_AddAssignee edge represents a role's ability to assign users to issues and pull requests. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_AddCollaborator edge represents that a role has the ability to add outside collaborators to organization repositories. This permission is typically restricted to Owners, as it grants repository access to external users who are not members of the organization. Outside collaborators bypass organizational membership controls, making this permission significant for security because it can be used to grant access to untrusted external identities without the visibility that full membership provides.
@@ -1,3 +1,3 @@
1
1
  ## General Information
2
2
 
3
- The non-traversable `GH_ReopenPullRequest` edge represents a role's ability to reopen closed pull requests. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
3
+ The non-traversable GH_AddLabel edge represents a role's ability to add labels to issues and pull requests. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_AddMember edge indicates that a team role with the Maintainer permission level can add new members to the team. This edge is traversable because the ability to add members grants indirect access -- a maintainer can add any user to the team, and that user then inherits all of the team's repository permissions, effectively expanding the attack surface.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_AdminTo edge represents a role's full administrative access to the repository. Admin is the highest built-in repository role and grants control over all repository settings, including dangerous operations like deleting the repository or modifying its visibility. Admin access bypasses most protections including branch protection rules, unless `enforce_admins` is explicitly enabled on the branch protection rule. This edge is a key permission in the computed branch access model and is a high-value target in attack path analysis.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_BypassBranchProtection edge represents a role's ability to bypass branch protection rules on the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Bypassing branch protection allows merging pull requests without satisfying required review or status check requirements, effectively circumventing the merge gate. This bypass is suppressed when `enforce_admins` is enabled on the branch protection rule, which forces even admins to comply with the protection policy.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_BypassPullRequestAllowances edge represents a per-actor allowance that bypasses the pull request review requirement on a branch protection rule. This edge identifies specific users or teams that can merge code without going through the normal PR review process. This is a significant security concern because these actors can push or merge changes directly, circumventing code review controls that protect branch integrity. Note that this bypass is suppressed when `enforce_admins` is enabled on the branch protection rule, meaning even listed actors must follow the PR review requirement.
@@ -0,0 +1,10 @@
1
+ ## General Information
2
+
3
+ The traversable GH_CallsWorkflow edge links a workflow job to a reusable workflow it invokes via the `uses:` key at the job level. This edge captures the reusable workflow call graph, enabling analysts to trace inherited permissions and secret access through called workflows.
4
+
5
+ ### Local vs. remote reusable workflows
6
+
7
+ - **Local** (`./. github/workflows/_ci.yml`): the destination is matched by `name` against workflows in the same repository.
8
+ - **Remote** (`org/repo/.github/workflows/file.yml@ref`): the destination is matched by the full reference string. If the called workflow has not been collected, the edge destination will not resolve.
9
+
10
+ The `reusable_ref` property on the edge always contains the raw `uses:` value from the workflow file.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CanAccess edge indicates that a personal access token or app installation has been granted access to specific repositories. This edge represents the scope of access granted to a token or app rather than a direct attack path, providing visibility into which repositories are reachable through non-human credentials. It is non-traversable because token and app access does not transitively extend to other principals.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_CanAssumeIdentity edge is a hybrid edge connecting GitHub OIDC token sources to cloud identity targets configured for GitHub Actions federation. This edge represents a verified path from GitHub Actions to cloud resource access. It is traversable because an attacker who can execute workflows in the source repository, branch, or environment can obtain an OIDC token that the cloud provider will accept, granting access to the associated cloud identity and its permissions. This edge is critical for identifying cross-cloud lateral movement paths from GitHub into Azure and AWS.
@@ -1,6 +1,6 @@
1
1
  ## General Information
2
2
 
3
- The traversable `GH_CanCreateBranch` edge is a computed edge indicating that a role or actor can create new branches in a repository. Created by `Compute-GitHoundBranchAccess` with no additional API calls, the computation evaluates whether a wildcard (`*`) BPR with push restrictions and `blocks_creations` exists. If no such BPR exists, any write-capable role can create branches. If one exists, admin or `push_protected_branch` permission is required, or the actor must be listed in pushAllowances. Per-actor edges from `GH_User` or `GH_Team` are only emitted when BPR allowances grant branch creation access beyond what the role provides. Each edge includes a `reason` property and a `query_composition` Cypher query showing the underlying graph evidence.
3
+ The traversable GH_CanCreateBranch edge is a computed edge indicating that a role or actor can create new branches in a repository. The computation evaluates whether a wildcard (`*`) BPR with push restrictions and `blocks_creations` exists. If no such BPR exists, any write-capable role can create branches. If one exists, admin or `push_protected_branch` permission is required, or the actor must be listed in pushAllowances. Per-actor edges from GH_User or GH_Team are only emitted when BPR allowances grant branch creation access beyond what the role provides. Each edge includes a `reason` property and a `query_composition` Cypher query showing the underlying graph evidence.
4
4
 
5
5
  ## Scenarios
6
6
 
@@ -28,7 +28,7 @@ graph LR
28
28
 
29
29
  ### `push_protected_branch` — Push-protected role bypasses wildcard BPR
30
30
 
31
- A wildcard BPR blocks creations. The `GH_PushProtectedBranch` permission bypasses the push gate regardless of `enforce_admins`.
31
+ A wildcard BPR blocks creations. The GH_PushProtectedBranch permission bypasses the push gate regardless of `enforce_admins`.
32
32
 
33
33
  ```mermaid
34
34
  graph LR
@@ -41,7 +41,7 @@ graph LR
41
41
 
42
42
  ### `push_allowance` — Per-actor push restriction bypass
43
43
 
44
- User or Team listed in the wildcard BPR's `pushAllowances` can create branches. This is a per-actor delta edge — only emitted when the actor's role doesn't already grant `GH_CanCreateBranch`.
44
+ User or Team listed in the wildcard BPR's `pushAllowances` can create branches. This is a per-actor delta edge — only emitted when the actor's role doesn't already grant GH_CanCreateBranch.
45
45
 
46
46
  ```mermaid
47
47
  graph LR
@@ -0,0 +1,31 @@
1
+ ## General Information
2
+
3
+ The traversable GH_CanEditProtection edge is a computed edge indicating that a role can modify or remove branch protection rules in a repository. This edge is emitted when the role has GH_EditRepoProtections or GH_AdminTo permissions and the repository contains at least one protected branch. Repo-targeted edges model the repo-wide security impact for attack path traversal; branch-targeted edges are also emitted as supporting evidence for each protected branch governed by those rules.
4
+
5
+ ## Scenarios
6
+
7
+ ### `admin` — Admin can edit protections
8
+
9
+ The admin role has GH_AdminTo which implicitly grants the ability to modify or remove any branch protection rule.
10
+
11
+ ```mermaid
12
+ graph LR
13
+ role("GH_RepoRole admin") -->|GH_AdminTo| repo("GH_Repository")
14
+ repo -->|GH_HasBranch| branch("GH_Branch main")
15
+ bpr("GH_BranchProtectionRule") -->|GH_ProtectedBy| branch
16
+ role ==>|GH_CanEditProtection| repo
17
+ role ==>|GH_CanEditProtection| branch
18
+ ```
19
+
20
+ ### `edit_repo_protections` — Explicit edit permission
21
+
22
+ A custom or standard role with the GH_EditRepoProtections permission can modify or remove branch protection rules.
23
+
24
+ ```mermaid
25
+ graph LR
26
+ role("GH_RepoRole custom") -->|GH_EditRepoProtections| repo("GH_Repository")
27
+ repo -->|GH_HasBranch| branch("GH_Branch main")
28
+ bpr("GH_BranchProtectionRule") -->|GH_ProtectedBy| branch
29
+ role ==>|GH_CanEditProtection| repo
30
+ role ==>|GH_CanEditProtection| branch
31
+ ```
@@ -0,0 +1,59 @@
1
+ ## General Information
2
+
3
+ The traversable GH_CanPwnRequest edge indicates that a repository role can exploit a pwn-requestable workflow to execute arbitrary code with the base branch's secrets, GITHUB_TOKEN permissions, and OIDC identity. This is a computed edge that combines workflow analysis with repository access and fork policy evaluation.
4
+
5
+ ### Pwn Request Conditions
6
+
7
+ A workflow is considered pwn-requestable (`is_pwn_requestable = true`) when **all** of the following are true:
8
+
9
+ 1. **`pull_request_target` trigger**: The workflow is triggered by `pull_request_target`, which runs in the context of the base branch (not the fork) and has access to the base branch's secrets and permissions.
10
+ 2. **Attacker-controlled checkout**: A step uses `actions/checkout` with a `ref` parameter pointing to the pull request head, meaning attacker-supplied code from the fork replaces the trusted repository contents. Detected ref patterns:
11
+ - `${{ github.event.pull_request.head.sha }}`
12
+ - `${{ github.event.pull_request.head.ref }}`
13
+ - `${{ github.head_ref }}`
14
+
15
+ ### Edge Drawing Conditions
16
+
17
+ An edge is drawn from a GH_RepoRole to the repository (and its branches) when:
18
+
19
+ 1. **Read access**: The role has a GH_ReadRepoContents edge to the repository (read access is the minimum required to fork).
20
+ 2. **Forkability**: The repository can be forked by the role holder:
21
+ - **Public repos**: Always forkable by anyone on GitHub.
22
+ - **Private/internal repos**: Requires both the organization setting `members_can_fork_private_repositories = true` AND the repository setting `allow_forking = true`.
23
+ 3. **Pwn-requestable workflow**: The repository has at least one workflow with `is_pwn_requestable = true`.
24
+
25
+ ### Branch Targeting
26
+
27
+ - If the `pull_request_target` trigger has a `branches:` filter (e.g., `branches: [main]`), edges are drawn only to matching branches and the repository.
28
+ - If unconstrained, edges are drawn to the repository and all of its branches.
29
+
30
+ ### Attack Impact
31
+
32
+ An attacker who exploits a pwn request gains code execution in the workflow runner with access to:
33
+
34
+ - **Repository secrets** scoped to the base branch
35
+ - **Organization secrets** accessible by the repository
36
+ - **GITHUB_TOKEN** with the workflow's declared permissions (often `write`)
37
+ - **OIDC tokens** if `id-token: write` is set, enabling cloud identity assumption via GH_CanAssumeIdentity
38
+ - **Environment secrets** if the workflow job targets a deployment environment
39
+
40
+ ### Caveats
41
+
42
+ - **OIDC traversal requires `id-token: write`**: The attack chain from GH_CanPwnRequest through GH_CanAssumeIdentity to a cloud role is only valid if the pwn-requestable workflow (or job) explicitly declares `id-token: write` in its `permissions:` block. The `id-token` permission defaults to `none` and is never implicitly granted — even when the workflow has no `permissions:` block at all. The `permissions` property on the GH_WorkflowJob node can be inspected to verify this.
43
+ - **GITHUB_TOKEN permissions**: The `permissions:` block controls what the `GITHUB_TOKEN` can do (e.g., push commits, create releases), but has no effect on secret access, OIDC token requests (governed separately by `id-token`), or arbitrary code execution. A workflow with `contents: read` is still fully exploitable via pwn request for secret exfiltration and lateral movement — only write-back to the repository is limited.
44
+
45
+ ```mermaid
46
+ graph LR
47
+ role("GH_RepoRole repo-read")
48
+ repo("GH_Repository private-app")
49
+ branch("GH_Branch main")
50
+ wf("GH_Workflow vulnerable-ci.yml")
51
+ secret("GH_RepoSecret DEPLOY_KEY")
52
+ cloud("AWSRole deploy-prod")
53
+
54
+ role -- GH_CanPwnRequest --> repo
55
+ role -- GH_CanPwnRequest --> branch
56
+ repo -.- |GH_HasWorkflow| wf
57
+ repo -.- |GH_Contains| secret
58
+ branch -- GH_CanAssumeIdentity --> cloud
59
+ ```
@@ -0,0 +1,31 @@
1
+ ## General Information
2
+
3
+ The traversable GH_CanReadSecretScanningAlert edge is a computed edge indicating that a role can read a specific secret scanning alert, including the leaked secret value. The computation cross-references GH_ViewSecretScanningAlerts permission edges with GH_Contains structural edges (org-level and repo-level) to determine which alerts each role can access. This edge is traversable because reading an alert reveals the leaked secret — if the secret is a valid GitHub Personal Access Token, the GH_ValidToken edge enables identity compromise of the token's owner.
4
+
5
+ Each edge includes a `reason` property (`org_role_permission` or `repo_role_permission`) and a `query_composition` Cypher query showing the underlying graph evidence.
6
+
7
+ ## Scenarios
8
+
9
+ ### `org_role_permission` — Org role views alerts via organization
10
+
11
+ An org role with GH_ViewSecretScanningAlerts to the organization can read all secret scanning alerts across the entire org. The computation follows GH_Contains edges from the organization to each alert.
12
+
13
+ ```mermaid
14
+ graph LR
15
+ role("GH_OrgRole security_manager") -->|GH_ViewSecretScanningAlerts| org("GH_Organization")
16
+ org -->|GH_Contains| alert("GH_SecretScanningAlert #42")
17
+ role ==>|GH_CanReadSecretScanningAlert| alert
18
+ alert -.->|GH_ValidToken| user("GH_User jdoe")
19
+ ```
20
+
21
+ ### `repo_role_permission` — Repo role views alerts via repository
22
+
23
+ A repo role with GH_ViewSecretScanningAlerts to the repository can read secret scanning alerts in that specific repo. The computation follows GH_Contains edges from the repository to each alert.
24
+
25
+ ```mermaid
26
+ graph LR
27
+ role("GH_RepoRole admin") -->|GH_ViewSecretScanningAlerts| repo("GH_Repository")
28
+ repo -->|GH_Contains| alert("GH_SecretScanningAlert #17")
29
+ role ==>|GH_CanReadSecretScanningAlert| alert
30
+ alert -.->|GH_ValidToken| user("GH_User jdoe")
31
+ ```
@@ -1,6 +1,6 @@
1
- # General Information
1
+ ## General Information
2
2
 
3
- The traversable `GH_CanWriteBranch` edge is a computed edge indicating that a role or actor can push to a specific branch. Created by `Compute-GitHoundBranchAccess` with no additional API calls, the computation evaluates both the merge gate (PR review requirements) and push gate (push restrictions) of any branch protection rule protecting the branch. Role-level edges are the common case; per-actor edges from `GH_User` or `GH_Team` are only emitted when BPR allowances grant access beyond what the role provides. Each edge includes a `reason` property (`no_protection`, `admin`, `push_protected_branch`, `bypass_branch_protection`, `push_allowance`, `bypass_pr_allowance`) and a `query_composition` Cypher query showing the underlying graph evidence.
3
+ The traversable GH_CanWriteBranch edge is a computed edge indicating that a role or actor can push to a specific branch. The computation evaluates both the merge gate (PR review requirements) and push gate (push restrictions) of any branch protection rule protecting the branch. Role-level edges are the common case; per-actor edges from GH_User or GH_Team are only emitted when BPR allowances grant access beyond what the role provides. Each edge includes a `reason` property (`no_protection`, `admin`, `push_protected_branch`, `bypass_branch_protection`, `push_allowance`, `bypass_pr_allowance`) and a `query_composition` Cypher query showing the underlying graph evidence.
4
4
 
5
5
  ## Scenarios
6
6
 
@@ -29,7 +29,7 @@ graph LR
29
29
 
30
30
  ### `push_protected_branch` — Push gate bypass
31
31
 
32
- Push gate blocked by `push_restrictions` (no merge gate block). The `GH_PushProtectedBranch` permission bypasses the push gate regardless of `enforce_admins`.
32
+ Push gate blocked by `push_restrictions` (no merge gate block). The GH_PushProtectedBranch permission bypasses the push gate regardless of `enforce_admins`.
33
33
 
34
34
  ```mermaid
35
35
  graph LR
@@ -42,7 +42,7 @@ graph LR
42
42
 
43
43
  ### `bypass_branch_protection` — Merge gate bypass
44
44
 
45
- Merge gate blocked by PR reviews. The `GH_BypassBranchProtection` permission bypasses the merge gate. Requires `enforce_admins=false`; suppressed when `enforce_admins=true`.
45
+ Merge gate blocked by PR reviews. The GH_BypassBranchProtection permission bypasses the merge gate. Requires `enforce_admins=false`; suppressed when `enforce_admins=true`.
46
46
 
47
47
  ```mermaid
48
48
  graph LR
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CloseDiscussion edge represents a role's ability to close discussions, preventing further replies. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CloseIssue edge represents a role's ability to close issues. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ClosePullRequest edge represents a role's ability to close pull requests. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_Contains edge represents structural containment within the GitHub resource hierarchy. The organization serves as the top-level container for users, teams, repositories, roles, secrets, app installations, and personal access tokens. Repositories contain their own repo-level secrets, and environments contain environment-scoped secrets. This edge is created by the collector to establish the organizational hierarchy of GitHub resources and is not traversable because containment alone does not imply privilege escalation.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ConvertIssuesToDiscussions edge represents a role's ability to convert issues to discussions, moving them from the issue tracker to the discussions forum. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -1,3 +1,3 @@
1
1
  ## General Information
2
2
 
3
- The non-traversable `GH_RemoveLabel` edge represents a role's ability to remove labels from issues and pull requests. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
3
+ The non-traversable GH_CreateDiscussionCategory edge represents a role's ability to create new discussion categories. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CreateRepository edge represents that a role has the ability to create new repositories within the organization. This permission is available to Owners and custom organization roles that have been granted the repository creation permission. Creating repositories can introduce new attack surface to an organization, as each new repository is a potential vector for code execution through GitHub Actions workflows, secret exposure, and supply chain attacks.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CreateSoloMergeQueueEntry edge represents a role's ability to create solo merge queue entries, effectively bypassing the merge queue by merging independently of other queued changes. This permission is available to Admin roles and custom roles that have been granted this specific permission. Solo merge queue entries skip the batching and ordering guarantees of the merge queue, allowing changes to land without waiting for or being tested alongside other pending merges. This can circumvent the integration testing benefits that merge queues provide.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CreateTag edge represents a role's ability to create tags and releases. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission. Creating tags can trigger CI/CD workflows and publish release artifacts.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CreateTeam edge represents that a role has the ability to create teams within the organization. Teams are the primary mechanism for granting groups of users access to repositories, so team creation is a stepping stone to broader access. This edge is created by the collector when enumerating organization role permissions, and its security significance lies in the fact that a newly created team can be granted repository access and then populated with controlled accounts.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeleteAlertsCodeScanning edge represents a role's ability to delete code scanning alerts from the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Deleting code scanning alerts can obscure security vulnerabilities that have been detected in the codebase, which is significant from an audit and compliance perspective. An attacker with this permission could suppress evidence of vulnerabilities they have introduced.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeleteDiscussion edge represents a role's ability to delete discussions. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeleteDiscussionComment edge represents a role's ability to delete discussion comments authored by any user. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeleteIssue edge represents a role's ability to delete issues permanently. Deleted issues cannot be recovered. This permission is available to Admin roles and custom roles that have been granted this specific permission. Deleting issues can destroy audit trails and remove evidence of security discussions or vulnerability reports.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeleteTag edge represents a role's ability to delete tags and releases. This permission is available to Admin roles and custom roles that have been granted this specific permission. Deleting tags can break downstream dependency references and remove published artifacts.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DependsOn edge represents a `needs:` dependency between two jobs in the same workflow. This edge captures execution order constraints — the source job will not start until the destination job completes successfully. This edge is non-traversable because it represents sequencing only, not an access or privilege path.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_DeploysTo edge links a workflow job to the GitHub Environment it targets via the `environment:` key. This edge records which jobs deploy to which environments. Environments can gate deployments with protection rules (required reviewers, wait timers, deployment branch policies) and can expose environment-scoped secrets.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditCategoryOnDiscussion edge represents a role's ability to change the category of a discussion, moving it between categories. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditDiscussionCategory edge represents a role's ability to edit discussion categories to reorganize discussion classification. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditDiscussionComment edge represents a role's ability to edit discussion comments authored by any user. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditRepoAnnouncementBanners edge represents a role's ability to edit repository announcement banners displayed to visitors. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditRepoCustomPropertiesValues edge represents a role's ability to edit custom property values on the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Custom properties are organization-defined metadata fields on repositories that can be used for classification, compliance tagging, or policy enforcement via rulesets. Modifying custom property values could alter which organization-level rulesets apply to the repository, potentially bypassing security controls that are scoped by property-based targeting.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditRepoMetadata edge represents a role's ability to edit repository metadata including description, homepage URL, and visibility settings. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_EditRepoProtections edge represents a role's ability to edit or remove branch protection rules on the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Modifying a branch protection rule is an indirect bypass -- removing or weakening protections opens the branch to direct push or unreviewed merges, making this a high-severity permission from a security perspective. Attack paths that include this edge can escalate to full branch write access by first disabling protections.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasBaseRole edge represents role inheritance within the GitHub permission hierarchy. Org roles inherit down to all-repo roles (e.g., Owners inherits to all_repo_admin), and custom roles inherit from their base roles (e.g., a custom_role inherits from write). This edge is traversable because it extends permissions through the role hierarchy, meaning a principal with a higher-level role implicitly holds all inherited lower-level roles.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasBranch edge represents the relationship between a repository and its branches. This edge links each collected branch to its parent repository. It is a structural edge that provides the foundation for understanding branch-level protections and access controls. While not traversable itself, it connects repositories to branches where traversable edges like GH_CanWriteBranch and GH_CanEditProtection model the effective access.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasEnvironment edge represents the relationship between a repository or branch and its deployment environments. This edge links environments to the repositories that define them and to the branches that are allowed to deploy to them (via deployment branch policies). Environments are security-relevant because they can gate access to secrets and cloud credentials, and their deployment branch policies control which branches can trigger deployments.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasExternalIdentity edge represents the relationship between a SAML identity provider and the external identities (SSO users) it manages. This edge links each external identity to the SAML provider that authenticated it. External identities are a key component in cross-platform attack path analysis because they bridge the gap between corporate identity providers and GitHub user accounts via the GH_MapsToUser edge. Enumerating external identities reveals which corporate users have linked GitHub accounts and enables mapping from IdP compromise to GitHub access.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasJob edge links a workflow to each of its jobs. This edge is the primary structural link for walking from a workflow definition into its execution units. Because jobs can declare environments and permissions, traversing this edge enables analysts to reason about what a workflow can do and where it can deploy.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasMember edge represents the relationship between a GitHub enterprise or organization and a user who is a member of that scope. This edge records membership as directory context rather than as an access path: being listed as a member does not by itself describe what the user can do, only that the user belongs to the enterprise or organization. Membership remains security-relevant because it defines the population from which roles, team assignments, and token approvals are drawn, and it helps analysts understand who is inside the trust boundary when reviewing GitHub exposure.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasPersonalAccessToken edge represents the relationship between a user and their fine-grained personal access tokens that have been granted access to the organization. This edge links each approved token back to the user who created it. Fine-grained personal access tokens are security-significant because they provide programmatic access to organization resources with specific scoped permissions. Tracking token ownership is essential for understanding which users have standing API access and for identifying tokens that may need revocation.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasPersonalAccessTokenRequest edge represents the relationship between a user and their pending personal access token requests awaiting organizational approval. This edge links each pending token request back to the user who submitted it. Pending token requests are security-relevant because they represent access that may soon be granted, and reviewing them helps administrators understand what permissions users are requesting before approval. Organizations that require approval for fine-grained PATs will have these requests queued until an administrator acts on them.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasRole edge represents the assignment of a user or team to a specific role within the organization, repository, or team. This is the primary edge for connecting identities to their permissions and serves as the foundation of all access paths in the GitHub permission model. Because role assignment is the starting point for determining what a principal can do, this edge is traversable and critical for attack path analysis.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasSamlIdentityProvider edge represents the relationship between an organization and its SAML identity provider configuration. This edge links an organization to the SAML SSO provider used for authentication and user provisioning. SAML identity providers are a critical security component because they establish the trust boundary between an external identity provider (such as Entra ID or Okta) and the GitHub organization. Understanding this relationship is essential for mapping cross-platform attack paths where compromise of the identity provider could lead to access within the GitHub organization.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasSecret edge represents the relationship between a repository or environment and the secrets accessible within that context. This edge shows which secrets are available in which scopes. Repositories can have access to both organization-level secrets (scoped to selected repositories) and repository-level secrets, while environments contain their own environment-scoped secrets. This edge is traversable because any principal that can push code to a repository (via GH_CanWriteBranch or GH_CanCreateBranch) can write a workflow that exfiltrates the secret values at runtime, making this a meaningful link in attack path analysis.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasStep edge links a job to each of its steps in execution order. This edge enables analysts to enumerate all actions and shell commands executed by a job, including which secrets and variables each step consumes.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_HasVariable edge represents the relationship between a repository and the variables accessible within that context. This edge shows which variables are available in which scopes. Repositories can have access to both organization-level variables (scoped by visibility to all, private, or selected repositories) and repository-level variables defined directly on the repo. This edge is traversable because any principal that can push code to a repository (via GH_CanWriteBranch or GH_CanCreateBranch) can write a workflow that reads variable values at runtime, and variables may contain configuration data useful for lateral movement such as deployment URLs, service names, or environment identifiers.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_HasWorkflow edge represents the relationship between a repository and its GitHub Actions workflows. This edge links each discovered workflow definition to its parent repository. Workflows are significant from a security perspective because they can execute arbitrary code with repository permissions, access secrets, and assume cloud identities. This structural edge enables analysts to enumerate which workflows exist in a given repository.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The traversable GH_InstalledAs edge links a GitHub App to its installation within the organization. This edge is traversable because it connects the app definition to its active installation, which determines the specific set of repositories and permissions the app has been granted. Understanding the relationship between an app and its installation is essential for tracing how app-level permissions translate into repository access.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_InviteMember edge represents that a role has the ability to invite new members to the organization. This permission is typically restricted to Owners, as inviting members expands the organization's trust boundary by granting new users access to internal resources. An attacker with this permission could invite a controlled account to gain persistent access to the organization's repositories, teams, and secrets.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_JumpMergeQueue edge represents a role's ability to jump ahead of other entries in the merge queue. This permission is available to Admin roles and custom roles that have been granted this specific permission. Merge queues enforce an ordered sequence of CI checks and merges; jumping the queue allows a principal to prioritize their changes ahead of others. While less severe than bypassing protections entirely, this permission can be used to accelerate the landing of malicious changes before other queued entries are reviewed or tested.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageDeployKeys edge represents a role's ability to create, modify, and delete deploy keys for the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Deploy keys provide SSH-based access to the repository, and a deploy key with write access can push commits directly without going through the GitHub web interface or API authentication. Managing deploy keys is security-significant because it enables the creation of persistent, credential-based access that operates outside the normal user authentication flow.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageDiscussionBadges edge represents a role's ability to manage discussion badges used to highlight discussion participants. This permission is available to Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageOrganizationWebhooks edge represents that a role has the ability to manage organization-level webhooks. This edge is dynamically generated from custom organization role permissions discovered by the collector. Webhooks can be configured to send event data to external endpoints, making this permission significant for security because an attacker could create or modify webhooks to exfiltrate repository data, commit contents, or issue details to an attacker-controlled server, or use them as a persistence mechanism.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageRepoSecurityProducts edge represents a role's ability to manage repository-specific security product settings. This permission is available to Admin roles and custom roles that have been granted this specific permission. Unlike the broader GH_ManageSecurityProducts permission, this edge is scoped to repository-level security configuration such as repository-specific scanning settings and alert management. Disabling repository-level security products can create blind spots in vulnerability detection for the specific repository.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageSecurityProducts edge represents a role's ability to manage security product settings on the repository. This permission is available to Admin roles and custom roles that have been granted this specific permission. Managing security products allows enabling or disabling features such as secret scanning, code scanning, and Dependabot alerts. An attacker with this permission could disable security features to prevent detection of vulnerabilities or leaked secrets, making this a high-severity permission for security posture management.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageSettingsMergeTypes edge represents a role's ability to configure allowed merge types (merge commit, squash, rebase) on the repository. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageSettingsPages edge represents a role's ability to manage GitHub Pages settings including enabling, disabling, and configuring the source. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageSettingsProjects edge represents a role's ability to manage project board settings on the repository. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageSettingsWiki edge represents a role's ability to enable or disable the repository wiki. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageTopics edge represents a role's ability to manage repository topics used for discovery and classification. This permission is available to Maintain and Admin roles and custom roles that have been granted this specific permission.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_ManageWebhooks edge represents a role's ability to create, modify, and delete repository-level webhooks. This permission is available to Admin roles and custom roles that have been granted this specific permission. Webhooks can exfiltrate repository events and code changes to external endpoints, making this a security-sensitive permission. An attacker with this permission could configure a webhook to receive push event payloads containing commit diffs, effectively creating a covert channel for data exfiltration.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_MapsToUser edge maps an external identity (provisioned via SAML or SCIM) to a GitHub user within the organization, or to an external IdP user (such as [AZUser](https://bloodhound.specterops.io/resources/nodes/az-user), [Okta_User](https://bloodhound.specterops.io/opengraph/extensions/okta/nodes/okta_user), or [PingOneUser](https://github.com/andyrobbins/PingOneHound?tab=readme-ov-file#schema)) in hybrid graph scenarios. This edge represents identity correlation rather than an attack path, connecting a user's external IdP account to their GitHub account for visibility into federated identity mappings.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_MarkAsDuplicate edge represents a role's ability to mark issues or pull requests as duplicates. This permission is available to Triage, Write, Maintain, and Admin roles and custom roles that have been granted this specific permission.