openhound-github 0.5.0__tar.gz → 0.5.1__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 (370) hide show
  1. {openhound_github-0.5.0 → openhound_github-0.5.1}/PKG-INFO +7 -1
  2. {openhound_github-0.5.0 → openhound_github-0.5.1}/README.md +6 -0
  3. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/auth.py +28 -12
  4. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/source.py +11 -6
  5. openhound_github-0.5.1/tests/test_app_auth.py +156 -0
  6. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/CODE_OF_CONDUCT.md +0 -0
  7. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/CONTRIBUTING.md +0 -0
  8. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GOVERNANCE.md +0 -0
  9. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-COC-Header.png +0 -0
  10. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-CONTRIB-Header.png +0 -0
  11. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-GOV-Header.png +0 -0
  12. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-Header.png +0 -0
  13. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-LIC-Header.png +0 -0
  14. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/GitHub-SEC-Header.png +0 -0
  15. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/SECURITY.md +0 -0
  16. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/SO-Dark.svg +0 -0
  17. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/SO-FOSS-Dark.svg +0 -0
  18. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/SO-FOSS-Light.svg +0 -0
  19. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/SO-Light.svg +0 -0
  20. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/workflows/publish.yml +0 -0
  21. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/workflows/release-on-merge.yml +0 -0
  22. {openhound_github-0.5.0 → openhound_github-0.5.1}/.github/workflows/validate-branch.yml +0 -0
  23. {openhound_github-0.5.0 → openhound_github-0.5.1}/.gitignore +0 -0
  24. {openhound_github-0.5.0 → openhound_github-0.5.1}/.gitmodules +0 -0
  25. {openhound_github-0.5.0 → openhound_github-0.5.1}/.pre-commit-config.yaml +0 -0
  26. {openhound_github-0.5.0 → openhound_github-0.5.1}/LICENSE.md +0 -0
  27. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AddAssignee.md +0 -0
  28. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AddCollaborator.md +0 -0
  29. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AddLabel.md +0 -0
  30. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AddMember.md +0 -0
  31. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AdminTo.md +0 -0
  32. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  33. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_AssignedTo.md +0 -0
  34. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  35. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  36. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  37. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanAccess.md +0 -0
  38. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  39. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  40. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  41. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
  42. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  43. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  44. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanEditProtection.md +0 -0
  45. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  46. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  47. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanUseRunner.md +0 -0
  48. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  49. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  50. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CloseIssue.md +0 -0
  51. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  52. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_Contains.md +0 -0
  53. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  54. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  55. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CreateRepository.md +0 -0
  56. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  57. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CreateTag.md +0 -0
  58. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_CreateTeam.md +0 -0
  59. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  60. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  61. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  62. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeleteIssue.md +0 -0
  63. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeleteTag.md +0 -0
  64. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DependsOn.md +0 -0
  65. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_DeploysTo.md +0 -0
  66. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  67. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  68. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  69. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  70. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  71. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  72. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  73. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_GrantsAccessTo.md +0 -0
  74. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasBaseRole.md +0 -0
  75. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasBranch.md +0 -0
  76. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasEnvironment.md +0 -0
  77. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  78. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasJob.md +0 -0
  79. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasMember.md +0 -0
  80. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  81. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  82. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasRole.md +0 -0
  83. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  84. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasSecret.md +0 -0
  85. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasStep.md +0 -0
  86. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasVariable.md +0 -0
  87. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_HasWorkflow.md +0 -0
  88. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_InheritedFrom.md +0 -0
  89. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_InstalledAs.md +0 -0
  90. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_InviteMember.md +0 -0
  91. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  92. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  93. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  94. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  95. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  96. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  97. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  98. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  99. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  100. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  101. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageTopics.md +0 -0
  102. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  103. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_MapsToUser.md +0 -0
  104. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  105. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  106. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_MemberOf.md +0 -0
  107. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  108. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  109. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  110. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  111. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_Owns.md +0 -0
  112. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ProtectedBy.md +0 -0
  113. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  114. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  115. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  116. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  117. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  118. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  119. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  120. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_RemoveLabel.md +0 -0
  121. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  122. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReopenIssue.md +0 -0
  123. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  124. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_RequestPrReview.md +0 -0
  125. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  126. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  127. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  128. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  129. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  130. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_SetIssueType.md +0 -0
  131. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_SetMilestone.md +0 -0
  132. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  133. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_SyncedTo.md +0 -0
  134. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  135. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  136. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_TransferRepository.md +0 -0
  137. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_UsesSecret.md +0 -0
  138. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_UsesVariable.md +0 -0
  139. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ValidToken.md +0 -0
  140. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  141. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  142. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  143. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  144. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  145. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  146. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  147. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  148. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  149. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  150. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  151. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_App.md +0 -0
  152. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_AppInstallation.md +0 -0
  153. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Branch.md +0 -0
  154. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  155. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
  156. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
  157. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Environment.md +0 -0
  158. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  159. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  160. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  161. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  162. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_OrgRole.md +0 -0
  163. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_OrgRunner.md +0 -0
  164. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
  165. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_OrgSecret.md +0 -0
  166. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_OrgVariable.md +0 -0
  167. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Organization.md +0 -0
  168. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  169. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  170. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_RepoRole.md +0 -0
  171. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_RepoRunner.md +0 -0
  172. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_RepoSecret.md +0 -0
  173. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_RepoVariable.md +0 -0
  174. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Repository.md +0 -0
  175. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  176. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  177. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Team.md +0 -0
  178. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_TeamRole.md +0 -0
  179. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_User.md +0 -0
  180. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_Workflow.md +0 -0
  181. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  182. {openhound_github-0.5.0 → openhound_github-0.5.1}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  183. {openhound_github-0.5.0 → openhound_github-0.5.1}/docs/og-docs.json +0 -0
  184. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  185. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
  186. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
  187. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  188. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  189. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  190. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  191. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
  192. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  193. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  194. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  195. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/README.md +0 -0
  196. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  197. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/active-leaked-secrets.json +0 -0
  198. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  199. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/all-actions-allowed.json +0 -0
  200. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/app-installations-all-repos.json +0 -0
  201. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  202. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  203. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  204. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  205. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  206. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  207. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  208. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  209. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  210. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  211. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/default-repository-permissions.json +0 -0
  212. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  213. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  214. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  215. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  216. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/environments-admin-bypass.json +0 -0
  217. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/expired-pats.json +0 -0
  218. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/external-identities-without-scim.json +0 -0
  219. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/github-to-azure-identity.json +0 -0
  220. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/global-repo-perms.json +0 -0
  221. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/hybrid-identities.json +0 -0
  222. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  223. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-create-pages.json +0 -0
  224. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  225. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-delete-repos.json +0 -0
  226. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  227. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  228. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/org-owners.json +0 -0
  229. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/orgs-without-2fa.json +0 -0
  230. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/pats-all-repo-access.json +0 -0
  231. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/pending-pat-requests.json +0 -0
  232. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  233. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  234. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  235. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/public-repos.json +0 -0
  236. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  237. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/push-to-protected-branches.json +0 -0
  238. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  239. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  240. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/repository-workflows.json +0 -0
  241. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/saml-configuration.json +0 -0
  242. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  243. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  244. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  245. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/team-membership-admin.json +0 -0
  246. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/team-structure.json +0 -0
  247. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/unprotected-branches.json +0 -0
  248. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  249. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/unprotected-default-branches.json +0 -0
  250. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  251. {openhound_github-0.5.0 → openhound_github-0.5.1}/extension/schema.json +0 -0
  252. {openhound_github-0.5.0 → openhound_github-0.5.1}/justfile +0 -0
  253. {openhound_github-0.5.0 → openhound_github-0.5.1}/pyproject.toml +0 -0
  254. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/main.py +0 -0
  255. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/__init__.py +0 -0
  256. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/extension.yaml +0 -0
  257. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/graph.py +0 -0
  258. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/graphql.py +0 -0
  259. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/helpers.py +0 -0
  260. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/kinds/edges.py +0 -0
  261. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/kinds/nodes.py +0 -0
  262. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/lookup.py +0 -0
  263. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/main.py +0 -0
  264. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/__init__.py +0 -0
  265. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/actions_permission.py +0 -0
  266. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/app_installation.py +0 -0
  267. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/branch.py +0 -0
  268. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  269. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/branch_protection_rule.py +0 -0
  270. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/branch_push_allowance.py +0 -0
  271. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise.py +0 -0
  272. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_admin.py +0 -0
  273. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_helpers.py +0 -0
  274. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  275. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_member.py +0 -0
  276. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_organization.py +0 -0
  277. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_role.py +0 -0
  278. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_role_team.py +0 -0
  279. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_role_user.py +0 -0
  280. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_team.py +0 -0
  281. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_team_member.py +0 -0
  282. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  283. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_team_role.py +0 -0
  284. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/enterprise_user.py +0 -0
  285. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/env_secret.py +0 -0
  286. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/env_variable.py +0 -0
  287. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/environment.py +0 -0
  288. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/environment_branch_policy.py +0 -0
  289. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/external_identity.py +0 -0
  290. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org.py +0 -0
  291. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org_role.py +0 -0
  292. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org_role_member.py +0 -0
  293. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org_role_team.py +0 -0
  294. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org_secret.py +0 -0
  295. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/org_variable.py +0 -0
  296. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/personal_access_token.py +0 -0
  297. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/personal_access_token_access.py +0 -0
  298. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/personal_access_token_request.py +0 -0
  299. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  300. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/repo_role_assignment.py +0 -0
  301. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/repository.py +0 -0
  302. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/repository_role.py +0 -0
  303. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/repository_secret.py +0 -0
  304. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/repository_variable.py +0 -0
  305. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/runner.py +0 -0
  306. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  307. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/saml_helpers.py +0 -0
  308. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/saml_issuer.py +0 -0
  309. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/saml_provider.py +0 -0
  310. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/saml_service_provider.py +0 -0
  311. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/scim_user.py +0 -0
  312. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  313. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/team.py +0 -0
  314. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/team_member.py +0 -0
  315. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/team_role.py +0 -0
  316. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/user.py +0 -0
  317. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/workflow.py +0 -0
  318. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/workflow_job.py +0 -0
  319. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/models/workflow_step.py +0 -0
  320. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/resources/__init__.py +0 -0
  321. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/resources/enterprise.py +0 -0
  322. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/resources/organization.py +0 -0
  323. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/runner_ids.py +0 -0
  324. {openhound_github-0.5.0 → openhound_github-0.5.1}/src/openhound_github/transforms.py +0 -0
  325. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_branch_collection_gate.py +0 -0
  326. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_branch_protection_traversability.py +0 -0
  327. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/actions-permissions.json +0 -0
  328. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/actionsecrets.json +0 -0
  329. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/app.json +0 -0
  330. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/appinstalls.json +0 -0
  331. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/branch-policies.json +0 -0
  332. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/branch-prot-rules.json +0 -0
  333. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/branches.json +0 -0
  334. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/custom-roles.json +0 -0
  335. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/environments.json +0 -0
  336. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org-pat-request.json +0 -0
  337. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org-pat.json +0 -0
  338. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org-role-teams.json +0 -0
  339. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org-role-users.json +0 -0
  340. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org-roles.json +0 -0
  341. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/org.json +0 -0
  342. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/pat-repositories.json +0 -0
  343. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/repo-collaborators.json +0 -0
  344. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/repo-teams.json +0 -0
  345. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/repositories.json +0 -0
  346. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/scimusers.json +0 -0
  347. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/secrets.json +0 -0
  348. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/secretscanningalert.json +0 -0
  349. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/selected-org-secrets.json +0 -0
  350. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/variables.json +0 -0
  351. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_data/api/workflows.json +0 -0
  352. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_enterprise_capabilities.py +0 -0
  353. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_enterprise_organization.py +0 -0
  354. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_enterprise_resources.py +0 -0
  355. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_environment_model.py +0 -0
  356. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_error_resilience.py +0 -0
  357. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_external_identity_tenant_matching.py +0 -0
  358. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_github_rest_client.py +0 -0
  359. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_github_retry.py +0 -0
  360. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_org_secret_models.py +0 -0
  361. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_repository_rulesets.py +0 -0
  362. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_runner_ids.py +0 -0
  363. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_runner_models.py +0 -0
  364. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_runner_resources.py +0 -0
  365. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_saml_helpers.py +0 -0
  366. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_saml_models.py +0 -0
  367. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_scim_models.py +0 -0
  368. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_variable_models.py +0 -0
  369. {openhound_github-0.5.0 → openhound_github-0.5.1}/tests/test_workflow_model.py +0 -0
  370. {openhound_github-0.5.0 → openhound_github-0.5.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.5.0
3
+ Version: 0.5.1
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
@@ -45,6 +45,12 @@ The openhound-github extension collects resources from Github organizations and
45
45
  edges for
46
46
  BloodHound.
47
47
 
48
+ ### GitHub App JWT issuer
49
+
50
+ Enterprise GitHub App credentials accept either `client_id` or `app_id` as the
51
+ JWT issuer. When both are configured, `client_id` is preferred. At least one
52
+ identifier must be supplied together with `key_path` and `enterprise_name`.
53
+
48
54
  ### Enterprise SCIM and hybrid correlations
49
55
 
50
56
  When `SOURCES__GITHUB__COLLECT_ENTERPRISE_SCIM=true`, 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.
@@ -34,6 +34,12 @@ The openhound-github extension collects resources from Github organizations and
34
34
  edges for
35
35
  BloodHound.
36
36
 
37
+ ### GitHub App JWT issuer
38
+
39
+ Enterprise GitHub App credentials accept either `client_id` or `app_id` as the
40
+ JWT issuer. When both are configured, `client_id` is preferred. At least one
41
+ identifier must be supplied together with `key_path` and `enterprise_name`.
42
+
37
43
  ### Enterprise SCIM and hybrid correlations
38
44
 
39
45
  When `SOURCES__GITHUB__COLLECT_ENTERPRISE_SCIM=true`, 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.
@@ -27,7 +27,7 @@ class AccountConfig(BaseModel):
27
27
 
28
28
  class InstallationResponse(BaseModel):
29
29
  id: int
30
- client_id: str
30
+ client_id: str | None = None
31
31
  account: AccountConfig
32
32
  target_type: str
33
33
  app_id: int | None = None
@@ -39,15 +39,32 @@ class TokenResponse(BaseModel):
39
39
  expires_at: datetime
40
40
 
41
41
 
42
+ def resolve_github_app_jwt_issuer(
43
+ *, client_id: str | None, app_id: str | int | None
44
+ ) -> str:
45
+ """Select the configured identifier for GitHub App JWT authentication."""
46
+ normalized_client_id = str(client_id).strip() if client_id is not None else ""
47
+ if normalized_client_id:
48
+ return normalized_client_id
49
+
50
+ normalized_app_id = str(app_id).strip() if app_id is not None else ""
51
+ if normalized_app_id:
52
+ return normalized_app_id
53
+
54
+ raise ValueError(
55
+ "GitHub App credentials require either client_id or app_id for the JWT issuer"
56
+ )
57
+
58
+
42
59
  class GithubSession:
43
60
  def __init__(
44
61
  self,
45
- client_id: str,
62
+ jwt_issuer: str,
46
63
  private_key_path: str,
47
64
  api_uri: str = "https://api.github.com/",
48
65
  ):
49
66
  self.api_uri = api_uri
50
- self.client_id = client_id
67
+ self.jwt_issuer = jwt_issuer
51
68
  self.private_key_path = private_key_path
52
69
  self.client = RESTClient(
53
70
  base_url=self.api_uri,
@@ -59,9 +76,11 @@ class GithubSession:
59
76
  now_utc = datetime.now(timezone.utc).timestamp()
60
77
  header = {"alg": "RS256", "typ": "JWT"}
61
78
  claims = {
62
- "iss": self.client_id,
79
+ "iss": self.jwt_issuer,
63
80
  "iat": int(now_utc - 10), # Issued 10 seconds in the past
64
- "exp": int(now_utc + 540), # Expires in 9 minutes (GitHub max is 10, leaving room for clock drift)
81
+ "exp": int(
82
+ now_utc + 540
83
+ ), # Expires in 9 minutes (GitHub max is 10, leaving room for clock drift)
65
84
  }
66
85
 
67
86
  try:
@@ -86,12 +105,12 @@ class GithubInstallation(GithubSession):
86
105
  def __init__(
87
106
  self,
88
107
  installation_id: str,
89
- client_id: str,
108
+ jwt_issuer: str,
90
109
  private_key_path: str,
91
110
  api_uri: str = "https://api.github.com/",
92
111
  ):
93
112
  self.installation_id = installation_id
94
- super().__init__(client_id, private_key_path, api_uri)
113
+ super().__init__(jwt_issuer, private_key_path, api_uri)
95
114
 
96
115
  @property
97
116
  def token(self) -> TokenResponse:
@@ -108,14 +127,11 @@ class GithubInstallation(GithubSession):
108
127
  class GithubApp(GithubSession):
109
128
  def __init__(
110
129
  self,
111
- client_id: str,
130
+ jwt_issuer: str,
112
131
  private_key_path: str,
113
132
  api_uri: str = "https://api.github.com/",
114
133
  ):
115
- self.client_id = client_id
116
- self.private_key_path = private_key_path
117
- self.api_uri = api_uri
118
- super().__init__(client_id, private_key_path, api_uri)
134
+ super().__init__(jwt_issuer, private_key_path, api_uri)
119
135
 
120
136
  @property
121
137
  def installations(self) -> Iterator[InstallationResponse]:
@@ -18,6 +18,7 @@ from openhound_github.auth import (
18
18
  GithubApp,
19
19
  GitHubAppInstallationAuth,
20
20
  GithubInstallation,
21
+ resolve_github_app_jwt_issuer,
21
22
  )
22
23
  from openhound_github.helpers import github_retry_policy
23
24
  from openhound_github.main import app
@@ -75,8 +76,8 @@ class GithubCredentials(CredentialsConfiguration):
75
76
 
76
77
  @configspec
77
78
  class GithubEnterpriseAppCredentials(CredentialsConfiguration):
78
- client_id: str = None
79
- app_id: str = None
79
+ client_id: str | None = None
80
+ app_id: str | None = None
80
81
  key_path: str = None
81
82
  enterprise_name: str = None
82
83
  pat_token: str | None = None
@@ -151,6 +152,10 @@ def source(
151
152
  return client(BearerTokenAuth(token=token))
152
153
 
153
154
  if credentials.auth == "enterprise_app":
155
+ jwt_issuer = resolve_github_app_jwt_issuer(
156
+ client_id=credentials.client_id,
157
+ app_id=credentials.app_id,
158
+ )
154
159
  ctx = SourceContext(
155
160
  enterprise_name=credentials.enterprise_name,
156
161
  collect_enterprise_scim=bool(collect_enterprise_scim),
@@ -165,14 +170,14 @@ def source(
165
170
  elif credentials.pat_token:
166
171
  ctx.scim_client = ctx.sso_client
167
172
  github_app_session = GithubApp(
168
- client_id=credentials.client_id,
173
+ jwt_issuer=jwt_issuer,
169
174
  private_key_path=credentials.key_path,
170
175
  )
171
176
  for installation in github_app_session.installations:
172
177
  if installation.target_type == "Organization":
173
178
  org_installation = GithubInstallation(
174
179
  installation_id=installation.id,
175
- client_id=installation.client_id,
180
+ jwt_issuer=jwt_issuer,
176
181
  private_key_path=credentials.key_path,
177
182
  )
178
183
  ctx.organizations.append(
@@ -189,7 +194,7 @@ def source(
189
194
  if installation.target_type == "Enterprise":
190
195
  es_installation = GithubInstallation(
191
196
  installation_id=installation.id,
192
- client_id=installation.client_id,
197
+ jwt_issuer=jwt_issuer,
193
198
  private_key_path=credentials.key_path,
194
199
  )
195
200
  ctx.client = client(
@@ -206,7 +211,7 @@ def source(
206
211
  )
207
212
  org_installation = GithubInstallation(
208
213
  installation_id=credentials.install_id,
209
- client_id=credentials.client_id,
214
+ jwt_issuer=credentials.client_id,
210
215
  private_key_path=credentials.key_path,
211
216
  )
212
217
  ctx.organizations.append(
@@ -0,0 +1,156 @@
1
+ from __future__ import annotations
2
+
3
+ import importlib
4
+ from types import SimpleNamespace
5
+
6
+ import pytest
7
+ from dlt.common.configuration.resolve import resolve_configuration
8
+
9
+ from openhound_github import auth
10
+ from openhound_github.auth import (
11
+ AccountConfig,
12
+ GithubSession,
13
+ InstallationResponse,
14
+ resolve_github_app_jwt_issuer,
15
+ )
16
+ from openhound_github.source import GithubEnterpriseAppCredentials
17
+
18
+
19
+ @pytest.mark.parametrize(
20
+ ("client_id", "app_id", "expected"),
21
+ (
22
+ ("Iv1.client-id", None, "Iv1.client-id"),
23
+ (None, "123456", "123456"),
24
+ ("Iv1.preferred", "123456", "Iv1.preferred"),
25
+ (" Iv1.trimmed ", "123456", "Iv1.trimmed"),
26
+ ),
27
+ )
28
+ def test_resolve_github_app_jwt_issuer_prefers_client_id(
29
+ client_id: str | None,
30
+ app_id: str | None,
31
+ expected: str,
32
+ ) -> None:
33
+ assert resolve_github_app_jwt_issuer(client_id=client_id, app_id=app_id) == expected
34
+
35
+
36
+ def test_resolve_github_app_jwt_issuer_requires_an_identifier() -> None:
37
+ with pytest.raises(
38
+ ValueError,
39
+ match="require either client_id or app_id for the JWT issuer",
40
+ ):
41
+ resolve_github_app_jwt_issuer(client_id=None, app_id=None)
42
+
43
+
44
+ @pytest.mark.parametrize(
45
+ ("client_id", "app_id"),
46
+ (("Iv1.client-id", None), (None, "123456")),
47
+ )
48
+ def test_enterprise_app_configuration_accepts_either_identifier(
49
+ client_id: str | None,
50
+ app_id: str | None,
51
+ ) -> None:
52
+ credentials = resolve_configuration(
53
+ GithubEnterpriseAppCredentials(
54
+ client_id=client_id,
55
+ app_id=app_id,
56
+ key_path="/tmp/github-app.pem",
57
+ enterprise_name="example-enterprise",
58
+ )
59
+ )
60
+
61
+ assert credentials.is_partial() is False
62
+
63
+
64
+ def test_github_session_uses_explicit_jwt_issuer(
65
+ monkeypatch: pytest.MonkeyPatch, tmp_path
66
+ ) -> None:
67
+ key_path = tmp_path / "github-app.pem"
68
+ key_path.write_text("test-private-key", encoding="utf-8")
69
+ captured_claims: dict[str, object] = {}
70
+
71
+ monkeypatch.setattr(auth.RSAKey, "import_key", lambda _: object())
72
+
73
+ def fake_encode(header, claims, key):
74
+ captured_claims.update(claims)
75
+ return "encoded-jwt"
76
+
77
+ monkeypatch.setattr(auth.jwt, "encode", fake_encode)
78
+
79
+ session = GithubSession(
80
+ jwt_issuer="123456",
81
+ private_key_path=str(key_path),
82
+ )
83
+
84
+ assert session.jwt == "encoded-jwt"
85
+ assert captured_claims["iss"] == "123456"
86
+
87
+
88
+ def test_legacy_installation_response_does_not_require_client_id() -> None:
89
+ installation = InstallationResponse(
90
+ id=42,
91
+ account=AccountConfig(id=7, login="example-org"),
92
+ target_type="Organization",
93
+ app_id=123456,
94
+ )
95
+
96
+ assert installation.client_id is None
97
+ assert installation.app_id == 123456
98
+
99
+
100
+ def test_enterprise_source_reuses_selected_issuer_for_installation_tokens(
101
+ monkeypatch: pytest.MonkeyPatch,
102
+ ) -> None:
103
+ source_module = importlib.import_module("openhound_github.source")
104
+ captured_issuers: list[str] = []
105
+
106
+ class FakeGithubApp:
107
+ def __init__(self, jwt_issuer: str, private_key_path: str) -> None:
108
+ captured_issuers.append(jwt_issuer)
109
+ self.installations = (
110
+ SimpleNamespace(
111
+ id=11,
112
+ target_type="Organization",
113
+ account=SimpleNamespace(login="example-org"),
114
+ ),
115
+ SimpleNamespace(
116
+ id=12,
117
+ target_type="Enterprise",
118
+ account=SimpleNamespace(slug="example-enterprise"),
119
+ ),
120
+ )
121
+
122
+ class FakeGithubInstallation:
123
+ def __init__(
124
+ self,
125
+ installation_id: int,
126
+ jwt_issuer: str,
127
+ private_key_path: str,
128
+ ) -> None:
129
+ captured_issuers.append(jwt_issuer)
130
+
131
+ class FakeRESTClient:
132
+ def __init__(self, **kwargs) -> None:
133
+ pass
134
+
135
+ monkeypatch.setattr(source_module, "GithubApp", FakeGithubApp)
136
+ monkeypatch.setattr(source_module, "GithubInstallation", FakeGithubInstallation)
137
+ monkeypatch.setattr(
138
+ source_module, "GitHubAppInstallationAuth", lambda **_: object()
139
+ )
140
+ monkeypatch.setattr(source_module, "RESTClient", FakeRESTClient)
141
+ monkeypatch.setattr(source_module, "enterprise_resources", lambda _: ())
142
+ monkeypatch.setattr(source_module, "organization_resources", lambda _: ())
143
+
144
+ resources = source_module.source.__wrapped__(
145
+ credentials=GithubEnterpriseAppCredentials(
146
+ app_id="123456",
147
+ key_path="/tmp/github-app.pem",
148
+ enterprise_name="example-enterprise",
149
+ ),
150
+ host="https://api.github.com",
151
+ collect_enterprise_scim=False,
152
+ emit_legacy_scim_correlations=False,
153
+ )
154
+
155
+ assert resources == ()
156
+ assert captured_issuers == ["123456", "123456", "123456"]