openhound-github 0.6.6__tar.gz → 0.6.7__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 (378) hide show
  1. {openhound_github-0.6.6 → openhound_github-0.6.7}/PKG-INFO +16 -1
  2. {openhound_github-0.6.6 → openhound_github-0.6.7}/README.md +15 -0
  3. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/auth.py +10 -0
  4. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/helpers.py +30 -2
  5. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/resources/enterprise.py +30 -12
  6. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/resources/organization.py +35 -17
  7. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/source.py +169 -32
  8. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_github_app_retry.py +12 -0
  9. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_repository_rulesets.py +24 -1
  10. openhound_github-0.6.7/tests/test_source_endpoints.py +474 -0
  11. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/CODE_OF_CONDUCT.md +0 -0
  12. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/CONTRIBUTING.md +0 -0
  13. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GOVERNANCE.md +0 -0
  14. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-COC-Header.png +0 -0
  15. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-CONTRIB-Header.png +0 -0
  16. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-GOV-Header.png +0 -0
  17. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-Header.png +0 -0
  18. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-LIC-Header.png +0 -0
  19. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/GitHub-SEC-Header.png +0 -0
  20. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/SECURITY.md +0 -0
  21. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/SO-Dark.svg +0 -0
  22. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/SO-FOSS-Dark.svg +0 -0
  23. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/SO-FOSS-Light.svg +0 -0
  24. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/SO-Light.svg +0 -0
  25. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/workflows/publish.yml +0 -0
  26. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/workflows/release-on-merge.yml +0 -0
  27. {openhound_github-0.6.6 → openhound_github-0.6.7}/.github/workflows/validate-branch.yml +0 -0
  28. {openhound_github-0.6.6 → openhound_github-0.6.7}/.gitignore +0 -0
  29. {openhound_github-0.6.6 → openhound_github-0.6.7}/.gitmodules +0 -0
  30. {openhound_github-0.6.6 → openhound_github-0.6.7}/.pre-commit-config.yaml +0 -0
  31. {openhound_github-0.6.6 → openhound_github-0.6.7}/LICENSE.md +0 -0
  32. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AddAssignee.md +0 -0
  33. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AddCollaborator.md +0 -0
  34. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AddLabel.md +0 -0
  35. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AddMember.md +0 -0
  36. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AdminTo.md +0 -0
  37. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  38. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_AssignedTo.md +0 -0
  39. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  40. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  41. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  42. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanAccess.md +0 -0
  43. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  44. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  45. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  46. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
  47. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  48. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  49. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanEditProtection.md +0 -0
  50. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  51. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  52. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanUseRunner.md +0 -0
  53. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  54. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  55. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CloseIssue.md +0 -0
  56. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  57. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_Contains.md +0 -0
  58. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  59. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  60. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CreateRepository.md +0 -0
  61. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  62. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CreateTag.md +0 -0
  63. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_CreateTeam.md +0 -0
  64. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  65. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  66. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  67. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeleteIssue.md +0 -0
  68. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeleteTag.md +0 -0
  69. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DependsOn.md +0 -0
  70. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_DeploysTo.md +0 -0
  71. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  72. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  73. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  74. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  75. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  76. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  77. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  78. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasBaseRole.md +0 -0
  79. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasBranch.md +0 -0
  80. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasEnvironment.md +0 -0
  81. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  82. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasJob.md +0 -0
  83. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasMember.md +0 -0
  84. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  85. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  86. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasRole.md +0 -0
  87. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasRunner.md +0 -0
  88. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  89. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasSecret.md +0 -0
  90. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasStep.md +0 -0
  91. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasVariable.md +0 -0
  92. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_HasWorkflow.md +0 -0
  93. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_InheritedFrom.md +0 -0
  94. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_InstalledAs.md +0 -0
  95. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_InviteMember.md +0 -0
  96. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_IsEligibleFor.md +0 -0
  97. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  98. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  99. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  100. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  101. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  102. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  103. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  104. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  105. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  106. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  107. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageTopics.md +0 -0
  108. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  109. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_MapsToUser.md +0 -0
  110. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  111. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  112. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_MemberOf.md +0 -0
  113. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  114. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  115. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  116. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  117. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_Owns.md +0 -0
  118. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ProtectedBy.md +0 -0
  119. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  120. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  121. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  122. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  123. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  124. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  125. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  126. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_RemoveLabel.md +0 -0
  127. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  128. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReopenIssue.md +0 -0
  129. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  130. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_RequestPrReview.md +0 -0
  131. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  132. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  133. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  134. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  135. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  136. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_SetIssueType.md +0 -0
  137. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_SetMilestone.md +0 -0
  138. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  139. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_SyncedTo.md +0 -0
  140. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  141. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  142. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_TransferRepository.md +0 -0
  143. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_UsesSecret.md +0 -0
  144. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_UsesVariable.md +0 -0
  145. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ValidToken.md +0 -0
  146. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  147. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  148. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  149. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  150. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  151. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  152. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  153. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  154. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  155. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  156. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  157. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_App.md +0 -0
  158. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_AppInstallation.md +0 -0
  159. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Branch.md +0 -0
  160. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  161. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
  162. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
  163. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Environment.md +0 -0
  164. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  165. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  166. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  167. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  168. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_OrgRole.md +0 -0
  169. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_OrgRunner.md +0 -0
  170. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
  171. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_OrgSecret.md +0 -0
  172. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_OrgVariable.md +0 -0
  173. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Organization.md +0 -0
  174. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  175. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  176. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_RepoRole.md +0 -0
  177. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_RepoRunner.md +0 -0
  178. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_RepoSecret.md +0 -0
  179. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_RepoVariable.md +0 -0
  180. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Repository.md +0 -0
  181. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  182. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  183. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Team.md +0 -0
  184. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_TeamRole.md +0 -0
  185. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_User.md +0 -0
  186. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_Workflow.md +0 -0
  187. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  188. {openhound_github-0.6.6 → openhound_github-0.6.7}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  189. {openhound_github-0.6.6 → openhound_github-0.6.7}/docs/og-docs.json +0 -0
  190. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  191. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
  192. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
  193. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  194. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  195. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  196. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  197. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
  198. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  199. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  200. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  201. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/README.md +0 -0
  202. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  203. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/active-leaked-secrets.json +0 -0
  204. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  205. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/all-actions-allowed.json +0 -0
  206. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/app-installations-all-repos.json +0 -0
  207. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  208. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  209. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  210. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  211. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  212. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  213. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  214. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  215. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  216. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  217. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/default-repository-permissions.json +0 -0
  218. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  219. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  220. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  221. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  222. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/environments-admin-bypass.json +0 -0
  223. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/expired-pats.json +0 -0
  224. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/external-identities-without-scim.json +0 -0
  225. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/github-to-azure-identity.json +0 -0
  226. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/global-repo-perms.json +0 -0
  227. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/hybrid-identities.json +0 -0
  228. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  229. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-create-pages.json +0 -0
  230. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  231. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-delete-repos.json +0 -0
  232. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  233. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  234. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/org-owners.json +0 -0
  235. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/orgs-without-2fa.json +0 -0
  236. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/pats-all-repo-access.json +0 -0
  237. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/pending-pat-requests.json +0 -0
  238. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  239. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  240. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  241. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/public-repos.json +0 -0
  242. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  243. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/push-to-protected-branches.json +0 -0
  244. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  245. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  246. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/repository-workflows.json +0 -0
  247. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/saml-configuration.json +0 -0
  248. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  249. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  250. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  251. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/team-membership-admin.json +0 -0
  252. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/team-structure.json +0 -0
  253. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/unprotected-branches.json +0 -0
  254. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  255. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/unprotected-default-branches.json +0 -0
  256. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  257. {openhound_github-0.6.6 → openhound_github-0.6.7}/extension/schema.json +0 -0
  258. {openhound_github-0.6.6 → openhound_github-0.6.7}/justfile +0 -0
  259. {openhound_github-0.6.6 → openhound_github-0.6.7}/pyproject.toml +0 -0
  260. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/main.py +0 -0
  261. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/__init__.py +0 -0
  262. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/extension.yaml +0 -0
  263. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/graph.py +0 -0
  264. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/graphql.py +0 -0
  265. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/kinds/edges.py +0 -0
  266. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/kinds/nodes.py +0 -0
  267. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/lookup.py +0 -0
  268. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/main.py +0 -0
  269. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/__init__.py +0 -0
  270. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/actions_permission.py +0 -0
  271. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/app_installation.py +0 -0
  272. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/branch.py +0 -0
  273. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  274. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/branch_protection_rule.py +0 -0
  275. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/branch_push_allowance.py +0 -0
  276. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise.py +0 -0
  277. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_admin.py +0 -0
  278. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_helpers.py +0 -0
  279. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  280. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_member.py +0 -0
  281. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_organization.py +0 -0
  282. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_role.py +0 -0
  283. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_role_team.py +0 -0
  284. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_role_user.py +0 -0
  285. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_team.py +0 -0
  286. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_team_member.py +0 -0
  287. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  288. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_team_role.py +0 -0
  289. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/enterprise_user.py +0 -0
  290. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/env_secret.py +0 -0
  291. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/env_variable.py +0 -0
  292. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/environment.py +0 -0
  293. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/environment_branch_policy.py +0 -0
  294. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/external_identity.py +0 -0
  295. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org.py +0 -0
  296. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org_role.py +0 -0
  297. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org_role_member.py +0 -0
  298. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org_role_team.py +0 -0
  299. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org_secret.py +0 -0
  300. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/org_variable.py +0 -0
  301. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/personal_access_token.py +0 -0
  302. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/personal_access_token_access.py +0 -0
  303. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/personal_access_token_request.py +0 -0
  304. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  305. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/repo_role_assignment.py +0 -0
  306. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/repository.py +0 -0
  307. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/repository_role.py +0 -0
  308. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/repository_secret.py +0 -0
  309. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/repository_variable.py +0 -0
  310. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/runner.py +0 -0
  311. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  312. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/saml_helpers.py +0 -0
  313. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/saml_issuer.py +0 -0
  314. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/saml_provider.py +0 -0
  315. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/saml_service_provider.py +0 -0
  316. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/scim_user.py +0 -0
  317. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  318. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/team.py +0 -0
  319. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/team_member.py +0 -0
  320. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/team_role.py +0 -0
  321. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/user.py +0 -0
  322. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/workflow.py +0 -0
  323. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/workflow_job.py +0 -0
  324. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/models/workflow_step.py +0 -0
  325. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/resources/__init__.py +0 -0
  326. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/runner_ids.py +0 -0
  327. {openhound_github-0.6.6 → openhound_github-0.6.7}/src/openhound_github/transforms.py +0 -0
  328. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_app_auth.py +0 -0
  329. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_branch_collection_gate.py +0 -0
  330. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_branch_protection_traversability.py +0 -0
  331. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/actions-permissions.json +0 -0
  332. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/actionsecrets.json +0 -0
  333. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/app.json +0 -0
  334. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/appinstalls.json +0 -0
  335. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/branch-policies.json +0 -0
  336. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/branch-prot-rules.json +0 -0
  337. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/branches.json +0 -0
  338. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/custom-roles.json +0 -0
  339. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/environments.json +0 -0
  340. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org-pat-request.json +0 -0
  341. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org-pat.json +0 -0
  342. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org-role-teams.json +0 -0
  343. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org-role-users.json +0 -0
  344. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org-roles.json +0 -0
  345. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/org.json +0 -0
  346. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/pat-repositories.json +0 -0
  347. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/repo-collaborators.json +0 -0
  348. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/repo-teams.json +0 -0
  349. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/repositories.json +0 -0
  350. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/scimusers.json +0 -0
  351. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/secrets.json +0 -0
  352. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/secretscanningalert.json +0 -0
  353. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/selected-org-secrets.json +0 -0
  354. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/variables.json +0 -0
  355. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_data/api/workflows.json +0 -0
  356. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_enterprise_capabilities.py +0 -0
  357. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_enterprise_organization.py +0 -0
  358. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_enterprise_resources.py +0 -0
  359. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_environment_model.py +0 -0
  360. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_environment_resources.py +0 -0
  361. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_environment_reviewer_lookup.py +0 -0
  362. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_error_resilience.py +0 -0
  363. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_github_rest_client.py +0 -0
  364. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_github_retry.py +0 -0
  365. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_helpers.py +0 -0
  366. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_lookup.py +0 -0
  367. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_org_scim_resources.py +0 -0
  368. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_org_secret_models.py +0 -0
  369. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_runner_ids.py +0 -0
  370. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_runner_models.py +0 -0
  371. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_runner_resources.py +0 -0
  372. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_saml_helpers.py +0 -0
  373. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_saml_models.py +0 -0
  374. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_scim_models.py +0 -0
  375. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_source_org_canonicalization.py +0 -0
  376. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_variable_models.py +0 -0
  377. {openhound_github-0.6.6 → openhound_github-0.6.7}/tests/test_workflow_model.py +0 -0
  378. {openhound_github-0.6.6 → openhound_github-0.6.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.6.6
3
+ Version: 0.6.7
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
@@ -51,6 +51,21 @@ Enterprise GitHub App credentials accept either `client_id` or `app_id` as the
51
51
  JWT issuer. When both are configured, `client_id` is preferred. At least one
52
52
  identifier must be supplied together with `key_path` and `enterprise_name`.
53
53
 
54
+ ### GitHub Enterprise Server endpoints
55
+
56
+ GitHub.com is the default deployment and does not require endpoint configuration.
57
+ To collect from GitHub Enterprise Server, set both API endpoints in `config.toml`:
58
+
59
+ ```toml
60
+ [sources.github]
61
+ rest_api_url = "https://ghe.example/api/v3"
62
+ graphql_url = "https://ghe.example/api/graphql"
63
+ ```
64
+
65
+ Both values must be provided together when overriding the GitHub.com defaults.
66
+ Endpoint URLs must use HTTPS and share the same origin. GitHub App
67
+ `credentials.api_uri` may override only the path on that same origin.
68
+
54
69
  ### Enterprise SCIM and hybrid correlations
55
70
 
56
71
  A token with enterprise SCIM access is used to collect both `/scim/v2/enterprises/{enterprise}/Users` and `/scim/v2/enterprises/{enterprise}/Groups`. The collector emits normalized `SCIM_Organization`, `SCIM_User`, and `SCIM_Group` nodes plus `SCIM_Contains`, `SCIM_MemberOf`, and `SCIM_Provisioned` relationships. Install the BloodHound SCIM extension alongside this extension to register the shared SCIM kinds.
@@ -40,6 +40,21 @@ Enterprise GitHub App credentials accept either `client_id` or `app_id` as the
40
40
  JWT issuer. When both are configured, `client_id` is preferred. At least one
41
41
  identifier must be supplied together with `key_path` and `enterprise_name`.
42
42
 
43
+ ### GitHub Enterprise Server endpoints
44
+
45
+ GitHub.com is the default deployment and does not require endpoint configuration.
46
+ To collect from GitHub Enterprise Server, set both API endpoints in `config.toml`:
47
+
48
+ ```toml
49
+ [sources.github]
50
+ rest_api_url = "https://ghe.example/api/v3"
51
+ graphql_url = "https://ghe.example/api/graphql"
52
+ ```
53
+
54
+ Both values must be provided together when overriding the GitHub.com defaults.
55
+ Endpoint URLs must use HTTPS and share the same origin. GitHub App
56
+ `credentials.api_uri` may override only the path on that same origin.
57
+
43
58
  ### Enterprise SCIM and hybrid correlations
44
59
 
45
60
  A token with enterprise SCIM access is used to collect both `/scim/v2/enterprises/{enterprise}/Users` and `/scim/v2/enterprises/{enterprise}/Groups`. The collector emits normalized `SCIM_Organization`, `SCIM_User`, and `SCIM_Group` nodes plus `SCIM_Contains`, `SCIM_MemberOf`, and `SCIM_Provisioned` relationships. Install the BloodHound SCIM extension alongside this extension to register the shared SCIM kinds.
@@ -293,6 +293,16 @@ class GitHubAppInstallationAuth(AuthConfigBase):
293
293
  return True
294
294
 
295
295
  def __call__(self, request: requests.PreparedRequest) -> requests.PreparedRequest:
296
+ try:
297
+ request_origin = _normalized_http_origin(
298
+ request.url or "", allow_query=True
299
+ )
300
+ except ValueError:
301
+ return request
302
+
303
+ if request_origin != self._api_origin:
304
+ return request
305
+
296
306
  request.headers["Authorization"] = f"Bearer {self.token()}"
297
307
  return request
298
308
 
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  import time
3
3
  from collections.abc import Iterator
4
- from typing import Any, Optional
4
+ from typing import Any, Optional, overload
5
5
  from urllib.parse import urlparse
6
6
 
7
7
  from dlt.common import jsonpath
@@ -17,11 +17,38 @@ from openhound_github.auth import GitHubAppInstallationAuth
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
+ DEFAULT_GITHUB_REST_API_URL = "https://api.github.com"
21
+ DEFAULT_GITHUB_GRAPHQL_URL = "https://api.github.com/graphql"
22
+
20
23
 
21
24
  class GraphQLPaginationError(RuntimeError):
22
25
  pass
23
26
 
24
27
 
28
+ @overload
29
+ def graphql_client_and_path(
30
+ rest_client: RESTClient,
31
+ graphql_client: RESTClient | None,
32
+ ) -> tuple[RESTClient, str]: ...
33
+
34
+
35
+ @overload
36
+ def graphql_client_and_path(
37
+ rest_client: RESTClient | None,
38
+ graphql_client: RESTClient | None,
39
+ ) -> tuple[RESTClient | None, str]: ...
40
+
41
+
42
+ def graphql_client_and_path(
43
+ rest_client: RESTClient | None,
44
+ graphql_client: RESTClient | None,
45
+ ) -> tuple[RESTClient | None, str]:
46
+ """Return the configured GraphQL client and its request path."""
47
+ if graphql_client:
48
+ return graphql_client, ""
49
+ return rest_client, "/graphql"
50
+
51
+
25
52
  class AdaptiveGraphQLPageError(RuntimeError):
26
53
  """A terminal GraphQL page failure with adaptive pagination context."""
27
54
 
@@ -184,6 +211,7 @@ def _graphql_gateway_status(exception: BaseException) -> int | None:
184
211
  def adaptive_graphql_paginate(
185
212
  client: RESTClient,
186
213
  *,
214
+ graphql_path: str = "/graphql",
187
215
  query: str,
188
216
  variables: dict[str, Any],
189
217
  page_info_path: str,
@@ -247,7 +275,7 @@ def adaptive_graphql_paginate(
247
275
  }
248
276
  try:
249
277
  response = client.post(
250
- "/graphql",
278
+ graphql_path,
251
279
  json={"query": query, "variables": request_variables},
252
280
  )
253
281
  response.raise_for_status()
@@ -11,7 +11,11 @@ from openhound_github.graphql import (
11
11
  ENTERPRISE_QUERY,
12
12
  ENTERPRISE_SAML_QUERY,
13
13
  )
14
- from openhound_github.helpers import GraphQLCursorPaginator, scim_skip_reason
14
+ from openhound_github.helpers import (
15
+ GraphQLCursorPaginator,
16
+ graphql_client_and_path,
17
+ scim_skip_reason,
18
+ )
15
19
  from openhound_github.main import app
16
20
  from openhound_github.models import (
17
21
  BaseUser,
@@ -53,7 +57,9 @@ class SourceContext:
53
57
  """Shared context for GitHub API access."""
54
58
 
55
59
  client: RESTClient
60
+ graphql_client: RESTClient | None = None
56
61
  sso_client: RESTClient | None = None
62
+ sso_graphql_client: RESTClient | None = None
57
63
  org_name: str | None = None
58
64
  enterprise_name: str | None = None
59
65
  emit_legacy_scim_correlations: bool = False
@@ -61,6 +67,14 @@ class SourceContext:
61
67
  github_web_origin: str = DEFAULT_GITHUB_WEB_ORIGIN
62
68
 
63
69
 
70
+ def _graphql_client(ctx: SourceContext) -> tuple[RESTClient, str]:
71
+ return graphql_client_and_path(ctx.client, ctx.graphql_client)
72
+
73
+
74
+ def _sso_graphql_client(ctx: SourceContext) -> tuple[RESTClient | None, str]:
75
+ return graphql_client_and_path(ctx.sso_client, ctx.sso_graphql_client)
76
+
77
+
64
78
  def iter_enterprise_scim_resources(
65
79
  client: RESTClient,
66
80
  enterprise_slug: str,
@@ -111,8 +125,9 @@ def enterprise(ctx: SourceContext):
111
125
  "variables": {"slug": ctx.enterprise_name, "after": None},
112
126
  }
113
127
 
128
+ client, graphql_path = _graphql_client(ctx)
114
129
  try:
115
- response = ctx.client.post("/graphql", json=data).json()
130
+ response = client.post(graphql_path, json=data).json()
116
131
  page_enterprise = (response.get("data") or {}).get("enterprise")
117
132
  if page_enterprise:
118
133
  yield page_enterprise
@@ -139,9 +154,10 @@ def enterprise_organizations(enterprise_data: Enterprise, ctx: SourceContext):
139
154
  "variables": {"slug": ctx.enterprise_name, "after": None},
140
155
  }
141
156
 
157
+ client, graphql_path = _graphql_client(ctx)
142
158
  try:
143
- for page_data in ctx.client.paginate(
144
- "/graphql",
159
+ for page_data in client.paginate(
160
+ graphql_path,
145
161
  method="POST",
146
162
  json=data,
147
163
  paginator=paginator,
@@ -263,8 +279,9 @@ def enterprise_members(enterprise_data: Enterprise, ctx: SourceContext):
263
279
  "query": ENTERPRISE_MEMBERS_QUERY,
264
280
  "variables": {"slug": ctx.enterprise_name, "count": 100, "after": None},
265
281
  }
266
- for page_data in ctx.client.paginate(
267
- "/graphql",
282
+ client, graphql_path = _graphql_client(ctx)
283
+ for page_data in client.paginate(
284
+ graphql_path,
268
285
  method="POST",
269
286
  json=data,
270
287
  paginator=paginator,
@@ -635,8 +652,9 @@ def enterprise_admins(enterprise_data: Enterprise, ctx: SourceContext):
635
652
  "query": ENTERPRISE_ADMINS_QUERY,
636
653
  "variables": {"slug": ctx.enterprise_name, "count": 100, "after": None},
637
654
  }
638
- for page_data in ctx.client.paginate(
639
- "/graphql",
655
+ client, graphql_path = _graphql_client(ctx)
656
+ for page_data in client.paginate(
657
+ graphql_path,
640
658
  method="POST",
641
659
  json=data,
642
660
  paginator=paginator,
@@ -665,7 +683,7 @@ def enterprise_admins(enterprise_data: Enterprise, ctx: SourceContext):
665
683
  parallelized=True
666
684
  )
667
685
  def enterprise_saml_provider(enterprise_data: Enterprise, ctx: SourceContext):
668
- client = ctx.sso_client
686
+ client, graphql_path = _sso_graphql_client(ctx)
669
687
  if not client:
670
688
  logger.info(
671
689
  "Skipping enterprise_saml_provider for enterprise '%s': no SSO client configured",
@@ -679,7 +697,7 @@ def enterprise_saml_provider(enterprise_data: Enterprise, ctx: SourceContext):
679
697
  }
680
698
 
681
699
  try:
682
- response = client.post("/graphql", json=data).json()
700
+ response = client.post(graphql_path, json=data).json()
683
701
  except Exception as e:
684
702
  logger.error(
685
703
  f"Error in resource 'enterprise_saml_provider' processing enterprise '{ctx.enterprise_name}': {e}",
@@ -779,7 +797,7 @@ def enterprise_saml_issuer(saml_provider: SamlProvider, ctx: SourceContext):
779
797
  def enterprise_external_identity(
780
798
  saml_provider: SamlProvider, ctx: SourceContext
781
799
  ):
782
- client = ctx.sso_client
800
+ client, graphql_path = _sso_graphql_client(ctx)
783
801
  if not client:
784
802
  logger.info(
785
803
  "Skipping enterprise_external_identity for enterprise '%s': no SSO client configured",
@@ -801,7 +819,7 @@ def enterprise_external_identity(
801
819
 
802
820
  try:
803
821
  for page_data in client.paginate(
804
- "/graphql",
822
+ graphql_path,
805
823
  method="POST",
806
824
  json=data,
807
825
  paginator=paginator,
@@ -24,8 +24,10 @@ from openhound_github.graphql import (
24
24
  )
25
25
  from openhound_github.helpers import (
26
26
  AdaptiveGraphQLPageError,
27
+ DEFAULT_GITHUB_REST_API_URL,
27
28
  GraphQLCursorPaginator,
28
29
  adaptive_graphql_paginate,
30
+ graphql_client_and_path,
29
31
  scim_skip_reason,
30
32
  )
31
33
  from openhound_github.main import app
@@ -88,11 +90,11 @@ from openhound_github.models.saml_helpers import (
88
90
 
89
91
  logger = logging.getLogger(__name__)
90
92
 
91
-
92
93
  @dataclass
93
94
  class OrgContext:
94
95
  client: RESTClient
95
96
  org_name: str
97
+ graphql_client: RESTClient | None = None
96
98
  enterprise_name: str | None = None
97
99
  github_deployment_id: str = DEFAULT_GITHUB_DEPLOYMENT_ID
98
100
  github_web_origin: str = DEFAULT_GITHUB_WEB_ORIGIN
@@ -102,6 +104,7 @@ class OrgContext:
102
104
  class SourceContext:
103
105
  client: RESTClient
104
106
  organizations: list[OrgContext] = field(default_factory=list)
107
+ graphql_client: RESTClient | None = None
105
108
  enterprise_name: str | None = None
106
109
  github_deployment_id: str = DEFAULT_GITHUB_DEPLOYMENT_ID
107
110
  github_web_origin: str = DEFAULT_GITHUB_WEB_ORIGIN
@@ -138,6 +141,20 @@ def _client_for_org(ctx: SourceContext, org_login: str) -> RESTClient:
138
141
  return ctx.client
139
142
 
140
143
 
144
+ def _graphql_client_for_org(
145
+ ctx: SourceContext, org_login: str
146
+ ) -> tuple[RESTClient, str]:
147
+ for org in ctx.organizations:
148
+ if org.org_name == org_login:
149
+ return graphql_client_and_path(org.client, org.graphql_client)
150
+ return graphql_client_and_path(ctx.client, ctx.graphql_client)
151
+
152
+
153
+ def _rest_api_url(client: RESTClient) -> str:
154
+ base_url = getattr(client, "base_url", DEFAULT_GITHUB_REST_API_URL)
155
+ return str(base_url).strip().rstrip("/") or DEFAULT_GITHUB_REST_API_URL
156
+
157
+
141
158
  def _encode_path_segment(value: str) -> str:
142
159
  return quote(value, safe="")
143
160
 
@@ -464,7 +481,7 @@ def users(ctx: SourceContext) -> Iterator[dict[str, Any]]:
464
481
 
465
482
  for org in ctx.organizations:
466
483
  org_name = org.org_name
467
- client = org.client
484
+ client, graphql_path = _graphql_client_for_org(ctx, org_name)
468
485
  try:
469
486
  paginator = GraphQLCursorPaginator(
470
487
  page_info_path="data.organization.membersWithRole.pageInfo",
@@ -478,7 +495,7 @@ def users(ctx: SourceContext) -> Iterator[dict[str, Any]]:
478
495
  }
479
496
 
480
497
  for page_data in client.paginate(
481
- "/graphql",
498
+ graphql_path,
482
499
  method="POST",
483
500
  json=data,
484
501
  paginator=paginator,
@@ -515,7 +532,7 @@ def teams(ctx: SourceContext):
515
532
 
516
533
  for org in ctx.organizations:
517
534
  org_name = org.org_name
518
- client = org.client
535
+ client, graphql_path = _graphql_client_for_org(ctx, org_name)
519
536
  try:
520
537
  paginator = GraphQLCursorPaginator(
521
538
  page_info_path="data.organization.teams.pageInfo",
@@ -528,7 +545,7 @@ def teams(ctx: SourceContext):
528
545
  "variables": {"login": org_name, "count": 100, "after": None},
529
546
  }
530
547
  for page_data in client.paginate(
531
- "/graphql",
548
+ graphql_path,
532
549
  method="POST",
533
550
  json=data,
534
551
  paginator=paginator,
@@ -626,7 +643,7 @@ def team_members(team: Team, ctx: SourceContext):
626
643
  raise RuntimeError(
627
644
  f"GitHub team {team.org_login}/{team.slug} has more members but no endCursor"
628
645
  )
629
- client = _client_for_org(ctx, team.org_login)
646
+ client, graphql_path = _graphql_client_for_org(ctx, team.org_login)
630
647
  data = {
631
648
  "query": TEAM_MEMBERS_OVERFLOW_QUERY,
632
649
  "variables": {
@@ -637,7 +654,7 @@ def team_members(team: Team, ctx: SourceContext):
637
654
  },
638
655
  }
639
656
  for page_data in client.paginate(
640
- "/graphql",
657
+ graphql_path,
641
658
  method="POST",
642
659
  json=data,
643
660
  paginator=paginator,
@@ -927,12 +944,13 @@ def repositories_graphql(ctx: SourceContext):
927
944
  """
928
945
  for org in ctx.organizations:
929
946
  org_name = org.org_name
930
- client = org.client
947
+ client, graphql_path = _graphql_client_for_org(ctx, org_name)
931
948
  repository_cursor: str | None = None
932
949
  emitted_repositories = 0
933
950
  try:
934
951
  for page_data in adaptive_graphql_paginate(
935
952
  client,
953
+ graphql_path=graphql_path,
936
954
  query=REPO_REFS_QUERY,
937
955
  variables={"login": org_name, "after": None},
938
956
  page_info_path="data.organization.repositories.pageInfo",
@@ -1014,7 +1032,7 @@ def branches(repository: RepositoryQL, ctx: SourceContext):
1014
1032
  }
1015
1033
 
1016
1034
  if repository.refs.page_info.has_next_page:
1017
- client = _client_for_org(ctx, repository.org_login)
1035
+ client, graphql_path = _graphql_client_for_org(ctx, repository.org_login)
1018
1036
  data = {
1019
1037
  "query": REF_OVERFLOW_QUERY,
1020
1038
  "variables": {
@@ -1026,7 +1044,7 @@ def branches(repository: RepositoryQL, ctx: SourceContext):
1026
1044
  }
1027
1045
 
1028
1046
  for page_data in client.paginate(
1029
- "/graphql",
1047
+ graphql_path,
1030
1048
  method="POST",
1031
1049
  json=data,
1032
1050
  paginator=paginator,
@@ -1068,12 +1086,12 @@ def branch_protection_rules(repository: RepositoryQL, ctx: SourceContext):
1068
1086
  rule_ids_seen.add(rule_id)
1069
1087
 
1070
1088
  rule_ids_list = list(rule_ids_seen)
1071
- client = _client_for_org(ctx, repository.org_login)
1089
+ client, graphql_path = _graphql_client_for_org(ctx, repository.org_login)
1072
1090
  for i in range(0, len(rule_ids_list), 100):
1073
1091
  rules_chunk = rule_ids_list[i : i + 100]
1074
1092
  if rules_chunk:
1075
1093
  data = {"query": PROTECTION_RULES_QUERY, "variables": {"ids": rules_chunk}}
1076
- response = client.post("/graphql", json=data).json()
1094
+ response = client.post(graphql_path, json=data).json()
1077
1095
  for rule in response["data"].get("nodes", []):
1078
1096
  # GitHub can return null actors for deleted or inaccessible allowance actors.
1079
1097
  for allowance_key in ("bypassPullRequestAllowances", "pushAllowances"):
@@ -1657,7 +1675,7 @@ def secret_scanning_alerts(ctx: SourceContext):
1657
1675
  ):
1658
1676
  try:
1659
1677
  resp = requests.get(
1660
- "https://api.github.com/user",
1678
+ f"{_rest_api_url(client)}/user",
1661
1679
  headers={"Authorization": f"Bearer {secret}"},
1662
1680
  timeout=10,
1663
1681
  )
@@ -1793,14 +1811,14 @@ def saml_provider(ctx: SourceContext):
1793
1811
  """
1794
1812
  for org in ctx.organizations:
1795
1813
  org_name = org.org_name
1796
- client = org.client
1814
+ client, graphql_path = _graphql_client_for_org(ctx, org_name)
1797
1815
  try:
1798
1816
  data = {
1799
1817
  "query": SAML_QUERY,
1800
1818
  "variables": {"login": org_name, "count": 100, "after": None},
1801
1819
  }
1802
1820
 
1803
- response = client.post("/graphql", json=data).json()
1821
+ response = client.post(graphql_path, json=data).json()
1804
1822
  response_data = response.get("data", {})
1805
1823
  org_data = response_data.get("organization", {})
1806
1824
  if response_data and org_data:
@@ -1837,7 +1855,7 @@ def external_identities(ctx: SourceContext):
1837
1855
  """
1838
1856
  for org in ctx.organizations:
1839
1857
  org_name = org.org_name
1840
- client = org.client
1858
+ client, graphql_path = _graphql_client_for_org(ctx, org_name)
1841
1859
  github_deployment_id = org.github_deployment_id
1842
1860
  try:
1843
1861
  paginator = GraphQLCursorPaginator(
@@ -1853,7 +1871,7 @@ def external_identities(ctx: SourceContext):
1853
1871
  }
1854
1872
 
1855
1873
  for page_data in client.paginate(
1856
- "/graphql",
1874
+ graphql_path,
1857
1875
  method="POST",
1858
1876
  json=data,
1859
1877
  paginator=paginator,