checkmarxpythonsdk 1.8.2__py3-none-any.whl

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 (648) hide show
  1. CheckmarxPythonSDK/CxAccessControl/AccessControl.py +1274 -0
  2. CheckmarxPythonSDK/CxAccessControl/__init__.py +0 -0
  3. CheckmarxPythonSDK/CxAccessControl/accesscontrol/__init__.py +0 -0
  4. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/AuthenticationProvider.py +23 -0
  5. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/Configuration.py +17 -0
  6. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/LDAPGroup.py +15 -0
  7. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/LDAPGroupAndRoleMappingDetail.py +16 -0
  8. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/LDAPRoleMapping.py +21 -0
  9. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/LDAPServer.py +73 -0
  10. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/LDAPTeamMapping.py +21 -0
  11. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/MyProfile.py +37 -0
  12. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/OIDCClient.py +71 -0
  13. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/Permission.py +19 -0
  14. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/Role.py +21 -0
  15. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SAMLIdentityProvider.py +39 -0
  16. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SAMLRoleMapping.py +21 -0
  17. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SAMLServiceProvider.py +19 -0
  18. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SAMLTeamMapping.py +21 -0
  19. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SMTPSetting.py +25 -0
  20. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/ServiceProvider.py +15 -0
  21. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/SystemLocale.py +19 -0
  22. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/Team.py +19 -0
  23. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/User.py +51 -0
  24. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/WindowsDomain.py +17 -0
  25. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/__init__.py +19 -0
  26. CheckmarxPythonSDK/CxAccessControl/accesscontrol/dto/requests.py +146 -0
  27. CheckmarxPythonSDK/CxODataApiSDK/ProjectsODataAPI.py +578 -0
  28. CheckmarxPythonSDK/CxODataApiSDK/ResultsODataAPI.py +362 -0
  29. CheckmarxPythonSDK/CxODataApiSDK/ScansODataAPI.py +329 -0
  30. CheckmarxPythonSDK/CxODataApiSDK/Utilities.py +319 -0
  31. CheckmarxPythonSDK/CxODataApiSDK/__init__.py +44 -0
  32. CheckmarxPythonSDK/CxODataApiSDK/config.py +52 -0
  33. CheckmarxPythonSDK/CxOne/CodeRepositoryProjectImportAPI.py +79 -0
  34. CheckmarxPythonSDK/CxOne/KeycloakAPI/AttackDetectionApi.py +66 -0
  35. CheckmarxPythonSDK/CxOne/KeycloakAPI/AuthenticationManagementApi.py +723 -0
  36. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientAttributeCertificateApi.py +144 -0
  37. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientInitialAccessApi.py +79 -0
  38. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientRegistrationPolicyApi.py +31 -0
  39. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientRoleMappingsApi.py +268 -0
  40. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientRolesApi.py +733 -0
  41. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientScopesApi.py +217 -0
  42. CheckmarxPythonSDK/CxOne/KeycloakAPI/ClientsApi.py +764 -0
  43. CheckmarxPythonSDK/CxOne/KeycloakAPI/ComponentApi.py +136 -0
  44. CheckmarxPythonSDK/CxOne/KeycloakAPI/GroupsApi.py +302 -0
  45. CheckmarxPythonSDK/CxOne/KeycloakAPI/IdentityProvidersApi.py +383 -0
  46. CheckmarxPythonSDK/CxOne/KeycloakAPI/KeyApi.py +30 -0
  47. CheckmarxPythonSDK/CxOne/KeycloakAPI/ProtocolMappersApi.py +515 -0
  48. CheckmarxPythonSDK/CxOne/KeycloakAPI/RealmsAdminApi.py +885 -0
  49. CheckmarxPythonSDK/CxOne/KeycloakAPI/RoleMapperApi.py +272 -0
  50. CheckmarxPythonSDK/CxOne/KeycloakAPI/RolesApi.py +695 -0
  51. CheckmarxPythonSDK/CxOne/KeycloakAPI/RolesByIdApi.py +241 -0
  52. CheckmarxPythonSDK/CxOne/KeycloakAPI/ScopeMappingsApi.py +711 -0
  53. CheckmarxPythonSDK/CxOne/KeycloakAPI/UsersApi.py +875 -0
  54. CheckmarxPythonSDK/CxOne/KeycloakAPI/__init__.py +20 -0
  55. CheckmarxPythonSDK/CxOne/KeycloakAPI/api_url.py +1 -0
  56. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Access.py +29 -0
  57. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AccessToken.py +215 -0
  58. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AddressClaimSet.py +45 -0
  59. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AdminEventRepresentation.py +58 -0
  60. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ApplicationRepresentation.py +225 -0
  61. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ApplicationRepresentationClaims.py +61 -0
  62. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthDetailsRepresentation.py +37 -0
  63. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticationExecutionExportRepresentation.py +53 -0
  64. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticationExecutionInfoRepresentation.py +73 -0
  65. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticationExecutionRepresentation.py +57 -0
  66. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticationFlowRepresentation.py +62 -0
  67. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticatorConfigInfoRepresentation.py +43 -0
  68. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/AuthenticatorConfigRepresentation.py +33 -0
  69. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Authorization.py +30 -0
  70. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/CertificateRepresentation.py +37 -0
  71. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClaimRepresentation.py +61 -0
  72. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientInitialAccessCreatePresentation.py +29 -0
  73. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientInitialAccessPresentation.py +45 -0
  74. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientMappingsRepresentation.py +38 -0
  75. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientPoliciesRepresentation.py +31 -0
  76. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientPolicyConditionRepresentation.py +29 -0
  77. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientPolicyExecutorRepresentation.py +29 -0
  78. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientPolicyRepresentation.py +47 -0
  79. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientProfileRepresentation.py +39 -0
  80. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientProfilesRepresentation.py +43 -0
  81. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientRepresentation.py +216 -0
  82. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientScopeRepresentation.py +54 -0
  83. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ClientTemplateRepresentation.py +90 -0
  84. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ComponentExportRepresentation.py +45 -0
  85. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ComponentRepresentation.py +49 -0
  86. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ComponentTypeRepresentation.py +43 -0
  87. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Composites.py +33 -0
  88. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ConfigPropertyRepresentation.py +57 -0
  89. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Confirmation.py +29 -0
  90. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/CredentialRepresentation.py +93 -0
  91. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/DecisionStrategy.py +21 -0
  92. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/EnforcementMode.py +21 -0
  93. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/EventRepresentation.py +61 -0
  94. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/FederatedIdentityRepresentation.py +33 -0
  95. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/GlobalRequestResult.py +29 -0
  96. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/GroupRepresentation.py +61 -0
  97. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/IDToken.py +176 -0
  98. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/IdentityProviderMapperRepresentation.py +41 -0
  99. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/IdentityProviderMapperTypeRepresentation.py +47 -0
  100. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/IdentityProviderRepresentation.py +85 -0
  101. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/InstallationAdapterConfig.py +77 -0
  102. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/KeyMetadataRepresentation.py +64 -0
  103. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/KeyStoreConfig.py +45 -0
  104. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/KeyUse.py +21 -0
  105. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/KeysMetadataRepresentation.py +34 -0
  106. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Logic.py +21 -0
  107. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ManagementPermissionReference.py +33 -0
  108. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/MappingsRepresentation.py +35 -0
  109. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/MethodConfig.py +41 -0
  110. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/OAuthClientRepresentation.py +225 -0
  111. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PathCacheConfig.py +29 -0
  112. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PathConfig.py +78 -0
  113. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PathSegment.py +29 -0
  114. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/Permission.py +37 -0
  115. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PolicyEnforcementMode.py +21 -0
  116. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PolicyEnforcerConfig.py +87 -0
  117. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PolicyRepresentation.py +96 -0
  118. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ProtocolMapperEvaluationRepresentation.py +45 -0
  119. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ProtocolMapperRepresentation.py +49 -0
  120. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/PublishedRealmRepresentation.py +41 -0
  121. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/RealmEventsConfigRepresentation.py +45 -0
  122. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/RealmRepresentation.py +759 -0
  123. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/RequiredActionProviderRepresentation.py +49 -0
  124. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ResourceOwnerRepresentation.py +29 -0
  125. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ResourceRepresentation.py +83 -0
  126. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ResourceRepresentationOwner.py +29 -0
  127. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ResourceServerRepresentation.py +89 -0
  128. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/RoleRepresentation.py +60 -0
  129. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/RolesRepresentation.py +38 -0
  130. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ScopeEnforcementMode.py +21 -0
  131. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ScopeMappingRepresentation.py +41 -0
  132. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/ScopeRepresentation.py +56 -0
  133. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/SocialLinkRepresentation.py +33 -0
  134. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPAttribute.py +68 -0
  135. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPAttributePermissions.py +29 -0
  136. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPAttributeRequired.py +29 -0
  137. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPAttributeSelector.py +25 -0
  138. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPConfig.py +39 -0
  139. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UPGroup.py +37 -0
  140. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserConsentRepresentation.py +41 -0
  141. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserFederationMapperRepresentation.py +41 -0
  142. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserFederationProviderRepresentation.py +53 -0
  143. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserProfileAttributeGroupMetadata.py +37 -0
  144. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserProfileAttributeMetadata.py +53 -0
  145. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserProfileMetadata.py +41 -0
  146. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserRepresentation.py +167 -0
  147. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/UserSessionRepresentation.py +53 -0
  148. CheckmarxPythonSDK/CxOne/KeycloakAPI/dto/__init__.py +100 -0
  149. CheckmarxPythonSDK/CxOne/__init__.py +388 -0
  150. CheckmarxPythonSDK/CxOne/accessControlAPI.py +240 -0
  151. CheckmarxPythonSDK/CxOne/accessManagementAPI.py +1329 -0
  152. CheckmarxPythonSDK/CxOne/apisecAPI.py +610 -0
  153. CheckmarxPythonSDK/CxOne/applicationsAPI.py +297 -0
  154. CheckmarxPythonSDK/CxOne/auditTrailAPI.py +51 -0
  155. CheckmarxPythonSDK/CxOne/byorResultsHandlerAPI.py +78 -0
  156. CheckmarxPythonSDK/CxOne/byorResultsHandlerV2API.py +82 -0
  157. CheckmarxPythonSDK/CxOne/cloudInsightsServiceAPI.py +377 -0
  158. CheckmarxPythonSDK/CxOne/config.py +58 -0
  159. CheckmarxPythonSDK/CxOne/contributorsAPI.py +96 -0
  160. CheckmarxPythonSDK/CxOne/customStateAPI.py +69 -0
  161. CheckmarxPythonSDK/CxOne/dto/AccessToken.py +98 -0
  162. CheckmarxPythonSDK/CxOne/dto/AccessTokenAccess.py +14 -0
  163. CheckmarxPythonSDK/CxOne/dto/AccessTokenAuthorization.py +12 -0
  164. CheckmarxPythonSDK/CxOne/dto/AccessTokenCertConf.py +12 -0
  165. CheckmarxPythonSDK/CxOne/dto/AddAssignmentRoles.py +9 -0
  166. CheckmarxPythonSDK/CxOne/dto/AddressClaimSet.py +22 -0
  167. CheckmarxPythonSDK/CxOne/dto/ApiSecCounters.py +33 -0
  168. CheckmarxPythonSDK/CxOne/dto/Application.py +30 -0
  169. CheckmarxPythonSDK/CxOne/dto/ApplicationInput.py +12 -0
  170. CheckmarxPythonSDK/CxOne/dto/ApplicationsCollection.py +20 -0
  171. CheckmarxPythonSDK/CxOne/dto/Assignment.py +43 -0
  172. CheckmarxPythonSDK/CxOne/dto/AssignmentInput.py +24 -0
  173. CheckmarxPythonSDK/CxOne/dto/AssignmentsForResource.py +24 -0
  174. CheckmarxPythonSDK/CxOne/dto/AssignmentsWithBaseRoles.py +31 -0
  175. CheckmarxPythonSDK/CxOne/dto/AstIdWithName.py +26 -0
  176. CheckmarxPythonSDK/CxOne/dto/AstUser.py +39 -0
  177. CheckmarxPythonSDK/CxOne/dto/AsyncRequestResponse.py +10 -0
  178. CheckmarxPythonSDK/CxOne/dto/AuditEvent.py +24 -0
  179. CheckmarxPythonSDK/CxOne/dto/AuditEventLink.py +16 -0
  180. CheckmarxPythonSDK/CxOne/dto/AuditEvents.py +21 -0
  181. CheckmarxPythonSDK/CxOne/dto/AuditQuery.py +7 -0
  182. CheckmarxPythonSDK/CxOne/dto/AuthenticationExecutionExportRepresentation.py +24 -0
  183. CheckmarxPythonSDK/CxOne/dto/AuthenticationExecutionInfoRepresentation.py +36 -0
  184. CheckmarxPythonSDK/CxOne/dto/AuthenticationExecutionRepresentation.py +26 -0
  185. CheckmarxPythonSDK/CxOne/dto/AuthenticationFlowRepresentation.py +24 -0
  186. CheckmarxPythonSDK/CxOne/dto/AuthenticatorConfigInfoRepresentation.py +18 -0
  187. CheckmarxPythonSDK/CxOne/dto/AuthenticatorConfigRepresentation.py +16 -0
  188. CheckmarxPythonSDK/CxOne/dto/BaseRolesRequest.py +7 -0
  189. CheckmarxPythonSDK/CxOne/dto/BaseRolesResponse.py +17 -0
  190. CheckmarxPythonSDK/CxOne/dto/BflTree.py +21 -0
  191. CheckmarxPythonSDK/CxOne/dto/ByorJob.py +20 -0
  192. CheckmarxPythonSDK/CxOne/dto/ByorJobPatchRequest.py +6 -0
  193. CheckmarxPythonSDK/CxOne/dto/Category.py +16 -0
  194. CheckmarxPythonSDK/CxOne/dto/CategoryType.py +22 -0
  195. CheckmarxPythonSDK/CxOne/dto/CertificateRepresentation.py +18 -0
  196. CheckmarxPythonSDK/CxOne/dto/ChangeDetails.py +22 -0
  197. CheckmarxPythonSDK/CxOne/dto/Client.py +67 -0
  198. CheckmarxPythonSDK/CxOne/dto/ClientInitialAccessCreatePresentation.py +14 -0
  199. CheckmarxPythonSDK/CxOne/dto/ClientInitialAccessPresentation.py +22 -0
  200. CheckmarxPythonSDK/CxOne/dto/ClientMappingsRepresentation.py +16 -0
  201. CheckmarxPythonSDK/CxOne/dto/ClientPoliciesRepresentation.py +12 -0
  202. CheckmarxPythonSDK/CxOne/dto/ClientPolicyConditionRepresentation.py +14 -0
  203. CheckmarxPythonSDK/CxOne/dto/ClientPolicyExecutorRepresentation.py +14 -0
  204. CheckmarxPythonSDK/CxOne/dto/ClientPolicyRepresentation.py +20 -0
  205. CheckmarxPythonSDK/CxOne/dto/ClientProfileRepresentation.py +16 -0
  206. CheckmarxPythonSDK/CxOne/dto/ClientProfilesRepresentation.py +14 -0
  207. CheckmarxPythonSDK/CxOne/dto/ClientRepresentation.py +90 -0
  208. CheckmarxPythonSDK/CxOne/dto/ClientScopeEvaluateResourceProtocolMapperEvaluationRepresentation.py +24 -0
  209. CheckmarxPythonSDK/CxOne/dto/ClientScopeRepresentation.py +22 -0
  210. CheckmarxPythonSDK/CxOne/dto/ClientWithResource.py +33 -0
  211. CheckmarxPythonSDK/CxOne/dto/ClientsWithResourcesResponse.py +20 -0
  212. CheckmarxPythonSDK/CxOne/dto/CloudInsightAccount.py +28 -0
  213. CheckmarxPythonSDK/CxOne/dto/CloudInsightAccountLog.py +28 -0
  214. CheckmarxPythonSDK/CxOne/dto/CloudInsightContainer.py +24 -0
  215. CheckmarxPythonSDK/CxOne/dto/CloudInsightCreateEnrichAccount.py +7 -0
  216. CheckmarxPythonSDK/CxOne/dto/CloudInsightEnrichAccount.py +14 -0
  217. CheckmarxPythonSDK/CxOne/dto/CommentJSON.py +10 -0
  218. CheckmarxPythonSDK/CxOne/dto/CompilationResponse.py +7 -0
  219. CheckmarxPythonSDK/CxOne/dto/ComplianceSummary.py +14 -0
  220. CheckmarxPythonSDK/CxOne/dto/ComponentExportRepresentation.py +22 -0
  221. CheckmarxPythonSDK/CxOne/dto/ComponentRepresentation.py +24 -0
  222. CheckmarxPythonSDK/CxOne/dto/Composites.py +9 -0
  223. CheckmarxPythonSDK/CxOne/dto/ConfigPropertyRepresentation.py +24 -0
  224. CheckmarxPythonSDK/CxOne/dto/ContributorInsights.py +25 -0
  225. CheckmarxPythonSDK/CxOne/dto/ContributorScmInsights.py +14 -0
  226. CheckmarxPythonSDK/CxOne/dto/ContributorUnfamiliarProjects.py +10 -0
  227. CheckmarxPythonSDK/CxOne/dto/Contributors.py +20 -0
  228. CheckmarxPythonSDK/CxOne/dto/CreateRoleRequest.py +9 -0
  229. CheckmarxPythonSDK/CxOne/dto/CreatedApplication.py +40 -0
  230. CheckmarxPythonSDK/CxOne/dto/CredentialRepresentation.py +23 -0
  231. CheckmarxPythonSDK/CxOne/dto/Credentials.py +17 -0
  232. CheckmarxPythonSDK/CxOne/dto/CustomState.py +18 -0
  233. CheckmarxPythonSDK/CxOne/dto/DebugMessage.py +8 -0
  234. CheckmarxPythonSDK/CxOne/dto/DebugMessageResponse.py +16 -0
  235. CheckmarxPythonSDK/CxOne/dto/DefaultConfig.py +16 -0
  236. CheckmarxPythonSDK/CxOne/dto/DefaultConfigOut.py +22 -0
  237. CheckmarxPythonSDK/CxOne/dto/EffectivePermissionsForResourceResponse.py +21 -0
  238. CheckmarxPythonSDK/CxOne/dto/EngineData.py +23 -0
  239. CheckmarxPythonSDK/CxOne/dto/EngineMetrics.py +32 -0
  240. CheckmarxPythonSDK/CxOne/dto/EntitiesForExtendedResponse.py +21 -0
  241. CheckmarxPythonSDK/CxOne/dto/EntityRolesRequest.py +15 -0
  242. CheckmarxPythonSDK/CxOne/dto/EntityType.py +7 -0
  243. CheckmarxPythonSDK/CxOne/dto/Error.py +8 -0
  244. CheckmarxPythonSDK/CxOne/dto/ExecutionResponse.py +10 -0
  245. CheckmarxPythonSDK/CxOne/dto/FederatedIdentityRepresentation.py +8 -0
  246. CheckmarxPythonSDK/CxOne/dto/FileInfo.py +18 -0
  247. CheckmarxPythonSDK/CxOne/dto/Flag.py +26 -0
  248. CheckmarxPythonSDK/CxOne/dto/GPTMessage.py +11 -0
  249. CheckmarxPythonSDK/CxOne/dto/Git.py +21 -0
  250. CheckmarxPythonSDK/CxOne/dto/GlobalRequestResult.py +14 -0
  251. CheckmarxPythonSDK/CxOne/dto/Group.py +18 -0
  252. CheckmarxPythonSDK/CxOne/dto/GroupRepresentation.py +16 -0
  253. CheckmarxPythonSDK/CxOne/dto/GroupWithResource.py +41 -0
  254. CheckmarxPythonSDK/CxOne/dto/GroupsResponse.py +18 -0
  255. CheckmarxPythonSDK/CxOne/dto/GroupsWithResourcesResponse.py +18 -0
  256. CheckmarxPythonSDK/CxOne/dto/IDToken.py +86 -0
  257. CheckmarxPythonSDK/CxOne/dto/IdentityProviderMapperRepresentation.py +20 -0
  258. CheckmarxPythonSDK/CxOne/dto/IdentityProviderRepresentation.py +34 -0
  259. CheckmarxPythonSDK/CxOne/dto/ImportItem.py +16 -0
  260. CheckmarxPythonSDK/CxOne/dto/ImportItemWithLogs.py +20 -0
  261. CheckmarxPythonSDK/CxOne/dto/ImportRequest.py +14 -0
  262. CheckmarxPythonSDK/CxOne/dto/ImportResults.py +15 -0
  263. CheckmarxPythonSDK/CxOne/dto/InternalClient.py +16 -0
  264. CheckmarxPythonSDK/CxOne/dto/InternalGroup.py +14 -0
  265. CheckmarxPythonSDK/CxOne/dto/InternalUser.py +18 -0
  266. CheckmarxPythonSDK/CxOne/dto/JsonNode.py +54 -0
  267. CheckmarxPythonSDK/CxOne/dto/KeyStoreConfig.py +22 -0
  268. CheckmarxPythonSDK/CxOne/dto/KeysMetadataRepresentation.py +14 -0
  269. CheckmarxPythonSDK/CxOne/dto/KeysMetadataRepresentationKeyMetadataRepresentation.py +32 -0
  270. CheckmarxPythonSDK/CxOne/dto/KicsCounters.py +31 -0
  271. CheckmarxPythonSDK/CxOne/dto/KicsResult.py +60 -0
  272. CheckmarxPythonSDK/CxOne/dto/KicsResultCollection.py +16 -0
  273. CheckmarxPythonSDK/CxOne/dto/LanguageSummary.py +14 -0
  274. CheckmarxPythonSDK/CxOne/dto/LogItem.py +22 -0
  275. CheckmarxPythonSDK/CxOne/dto/ManagementPermissionReference.py +17 -0
  276. CheckmarxPythonSDK/CxOne/dto/MappingsRepresentation.py +14 -0
  277. CheckmarxPythonSDK/CxOne/dto/MemoryInfoRepresentation.py +24 -0
  278. CheckmarxPythonSDK/CxOne/dto/Metadata.py +18 -0
  279. CheckmarxPythonSDK/CxOne/dto/MethodInfo.py +28 -0
  280. CheckmarxPythonSDK/CxOne/dto/MethodParameter.py +24 -0
  281. CheckmarxPythonSDK/CxOne/dto/MultipleAssignmentInput.py +26 -0
  282. CheckmarxPythonSDK/CxOne/dto/MultivaluedHashMap.py +16 -0
  283. CheckmarxPythonSDK/CxOne/dto/PaginatedAccountLogsListResponse.py +23 -0
  284. CheckmarxPythonSDK/CxOne/dto/PaginatedAccountsListResponse.py +20 -0
  285. CheckmarxPythonSDK/CxOne/dto/PaginatedContainersListResponse.py +20 -0
  286. CheckmarxPythonSDK/CxOne/dto/PaginatedResourcesList.py +20 -0
  287. CheckmarxPythonSDK/CxOne/dto/PartialImportRepresentation.py +24 -0
  288. CheckmarxPythonSDK/CxOne/dto/PasswordPolicyTypeRepresentation.py +20 -0
  289. CheckmarxPythonSDK/CxOne/dto/Permission.py +21 -0
  290. CheckmarxPythonSDK/CxOne/dto/PlatformSummary.py +14 -0
  291. CheckmarxPythonSDK/CxOne/dto/PolicyRepresentation.py +36 -0
  292. CheckmarxPythonSDK/CxOne/dto/Predicate.py +15 -0
  293. CheckmarxPythonSDK/CxOne/dto/PredicateHistory.py +12 -0
  294. CheckmarxPythonSDK/CxOne/dto/PredicateWithCommentJSON.py +17 -0
  295. CheckmarxPythonSDK/CxOne/dto/PredicateWithCommentsJSON.py +18 -0
  296. CheckmarxPythonSDK/CxOne/dto/Preset.py +21 -0
  297. CheckmarxPythonSDK/CxOne/dto/PresetPaged.py +16 -0
  298. CheckmarxPythonSDK/CxOne/dto/PresetSummary.py +24 -0
  299. CheckmarxPythonSDK/CxOne/dto/ProfileInfoRepresentation.py +18 -0
  300. CheckmarxPythonSDK/CxOne/dto/Project.py +37 -0
  301. CheckmarxPythonSDK/CxOne/dto/ProjectCounter.py +17 -0
  302. CheckmarxPythonSDK/CxOne/dto/ProjectInput.py +36 -0
  303. CheckmarxPythonSDK/CxOne/dto/ProjectResponseCollection.py +18 -0
  304. CheckmarxPythonSDK/CxOne/dto/ProjectResponseModel.py +39 -0
  305. CheckmarxPythonSDK/CxOne/dto/ProjectSettings.py +26 -0
  306. CheckmarxPythonSDK/CxOne/dto/ProjectsCollection.py +18 -0
  307. CheckmarxPythonSDK/CxOne/dto/Property.py +11 -0
  308. CheckmarxPythonSDK/CxOne/dto/ProtocolMapperRepresentation.py +20 -0
  309. CheckmarxPythonSDK/CxOne/dto/ProtocolMappersRepresentation.py +22 -0
  310. CheckmarxPythonSDK/CxOne/dto/ProviderRepresentation.py +14 -0
  311. CheckmarxPythonSDK/CxOne/dto/Queries.py +26 -0
  312. CheckmarxPythonSDK/CxOne/dto/QueriesResponse.py +16 -0
  313. CheckmarxPythonSDK/CxOne/dto/QueriesTree.py +20 -0
  314. CheckmarxPythonSDK/CxOne/dto/Query.py +45 -0
  315. CheckmarxPythonSDK/CxOne/dto/QueryBuilderMessage.py +11 -0
  316. CheckmarxPythonSDK/CxOne/dto/QueryBuilderPrompt.py +6 -0
  317. CheckmarxPythonSDK/CxOne/dto/QueryDescription.py +29 -0
  318. CheckmarxPythonSDK/CxOne/dto/QueryDescriptionSampleCode.py +16 -0
  319. CheckmarxPythonSDK/CxOne/dto/QueryDetails.py +26 -0
  320. CheckmarxPythonSDK/CxOne/dto/QueryRequest.py +10 -0
  321. CheckmarxPythonSDK/CxOne/dto/QueryResponse.py +23 -0
  322. CheckmarxPythonSDK/CxOne/dto/QueryResult.py +14 -0
  323. CheckmarxPythonSDK/CxOne/dto/QuerySearch.py +17 -0
  324. CheckmarxPythonSDK/CxOne/dto/QuerySummary.py +18 -0
  325. CheckmarxPythonSDK/CxOne/dto/RealmEventsConfigRepresentation.py +22 -0
  326. CheckmarxPythonSDK/CxOne/dto/RealmRepresentation.py +306 -0
  327. CheckmarxPythonSDK/CxOne/dto/RequestStatus.py +16 -0
  328. CheckmarxPythonSDK/CxOne/dto/RequestStatusDetectLanguages.py +8 -0
  329. CheckmarxPythonSDK/CxOne/dto/RequestStatusNotReady.py +7 -0
  330. CheckmarxPythonSDK/CxOne/dto/RequiredActionProviderRepresentation.py +24 -0
  331. CheckmarxPythonSDK/CxOne/dto/Resource.py +32 -0
  332. CheckmarxPythonSDK/CxOne/dto/ResourceRepresentation.py +28 -0
  333. CheckmarxPythonSDK/CxOne/dto/ResourceServerRepresentation.py +28 -0
  334. CheckmarxPythonSDK/CxOne/dto/ResourceType.py +9 -0
  335. CheckmarxPythonSDK/CxOne/dto/ResourcesResponse.py +21 -0
  336. CheckmarxPythonSDK/CxOne/dto/Result.py +42 -0
  337. CheckmarxPythonSDK/CxOne/dto/ResultNode.py +30 -0
  338. CheckmarxPythonSDK/CxOne/dto/ResultResponse.py +36 -0
  339. CheckmarxPythonSDK/CxOne/dto/ResultsResponse.py +16 -0
  340. CheckmarxPythonSDK/CxOne/dto/ResultsSummary.py +34 -0
  341. CheckmarxPythonSDK/CxOne/dto/ResultsSummaryTree.py +22 -0
  342. CheckmarxPythonSDK/CxOne/dto/Role.py +30 -0
  343. CheckmarxPythonSDK/CxOne/dto/RoleRepresentation.py +15 -0
  344. CheckmarxPythonSDK/CxOne/dto/RoleRepresentationComposites.py +7 -0
  345. CheckmarxPythonSDK/CxOne/dto/RoleWithDetails.py +34 -0
  346. CheckmarxPythonSDK/CxOne/dto/RolesRepresentation.py +14 -0
  347. CheckmarxPythonSDK/CxOne/dto/Rule.py +23 -0
  348. CheckmarxPythonSDK/CxOne/dto/RuleInput.py +17 -0
  349. CheckmarxPythonSDK/CxOne/dto/SCMImportInput.py +30 -0
  350. CheckmarxPythonSDK/CxOne/dto/SastCounters.py +35 -0
  351. CheckmarxPythonSDK/CxOne/dto/SastResult.py +53 -0
  352. CheckmarxPythonSDK/CxOne/dto/SastScan.py +26 -0
  353. CheckmarxPythonSDK/CxOne/dto/SastStatus.py +11 -0
  354. CheckmarxPythonSDK/CxOne/dto/ScaContainersCounters.py +27 -0
  355. CheckmarxPythonSDK/CxOne/dto/ScaCounters.py +27 -0
  356. CheckmarxPythonSDK/CxOne/dto/ScaPackageCounters.py +35 -0
  357. CheckmarxPythonSDK/CxOne/dto/Scan.py +52 -0
  358. CheckmarxPythonSDK/CxOne/dto/ScanConfig.py +16 -0
  359. CheckmarxPythonSDK/CxOne/dto/ScanEngineVersion.py +18 -0
  360. CheckmarxPythonSDK/CxOne/dto/ScanInfo.py +36 -0
  361. CheckmarxPythonSDK/CxOne/dto/ScanInfoCollection.py +18 -0
  362. CheckmarxPythonSDK/CxOne/dto/ScanInput.py +25 -0
  363. CheckmarxPythonSDK/CxOne/dto/ScanParameter.py +26 -0
  364. CheckmarxPythonSDK/CxOne/dto/Scanner.py +19 -0
  365. CheckmarxPythonSDK/CxOne/dto/ScansCollection.py +18 -0
  366. CheckmarxPythonSDK/CxOne/dto/Scm.py +21 -0
  367. CheckmarxPythonSDK/CxOne/dto/ScmOrganization.py +16 -0
  368. CheckmarxPythonSDK/CxOne/dto/ScmProject.py +31 -0
  369. CheckmarxPythonSDK/CxOne/dto/ScopeMappingRepresentation.py +18 -0
  370. CheckmarxPythonSDK/CxOne/dto/ScopePermissions.py +20 -0
  371. CheckmarxPythonSDK/CxOne/dto/ScopeRepresentation.py +22 -0
  372. CheckmarxPythonSDK/CxOne/dto/ServerInfoRepresentation.py +38 -0
  373. CheckmarxPythonSDK/CxOne/dto/Session.py +35 -0
  374. CheckmarxPythonSDK/CxOne/dto/SessionRequest.py +10 -0
  375. CheckmarxPythonSDK/CxOne/dto/SessionResponse.py +16 -0
  376. CheckmarxPythonSDK/CxOne/dto/Sessions.py +16 -0
  377. CheckmarxPythonSDK/CxOne/dto/SeverityCounter.py +14 -0
  378. CheckmarxPythonSDK/CxOne/dto/SeveritySummary.py +14 -0
  379. CheckmarxPythonSDK/CxOne/dto/SinkFileSummary.py +14 -0
  380. CheckmarxPythonSDK/CxOne/dto/SinkNodeSummary.py +14 -0
  381. CheckmarxPythonSDK/CxOne/dto/SocialLinkRepresentation.py +8 -0
  382. CheckmarxPythonSDK/CxOne/dto/SourceFileSummary.py +14 -0
  383. CheckmarxPythonSDK/CxOne/dto/SourceNodeSummary.py +14 -0
  384. CheckmarxPythonSDK/CxOne/dto/SourcesTree.py +11 -0
  385. CheckmarxPythonSDK/CxOne/dto/SpiInfoRepresentation.py +14 -0
  386. CheckmarxPythonSDK/CxOne/dto/StartEnrich.py +12 -0
  387. CheckmarxPythonSDK/CxOne/dto/StatusDetails.py +35 -0
  388. CheckmarxPythonSDK/CxOne/dto/StatusSummary.py +14 -0
  389. CheckmarxPythonSDK/CxOne/dto/StrEnum.py +39 -0
  390. CheckmarxPythonSDK/CxOne/dto/SubCheck.py +24 -0
  391. CheckmarxPythonSDK/CxOne/dto/SubsetScan.py +46 -0
  392. CheckmarxPythonSDK/CxOne/dto/SynchronizationResult.py +22 -0
  393. CheckmarxPythonSDK/CxOne/dto/SystemInfoRepresentation.py +46 -0
  394. CheckmarxPythonSDK/CxOne/dto/TaskInfo.py +16 -0
  395. CheckmarxPythonSDK/CxOne/dto/TestLdapConnectionRepresentation.py +28 -0
  396. CheckmarxPythonSDK/CxOne/dto/TimeStamp.py +6 -0
  397. CheckmarxPythonSDK/CxOne/dto/TotalCounters.py +17 -0
  398. CheckmarxPythonSDK/CxOne/dto/Tree.py +20 -0
  399. CheckmarxPythonSDK/CxOne/dto/TriageRequest.py +9 -0
  400. CheckmarxPythonSDK/CxOne/dto/TriageResponse.py +18 -0
  401. CheckmarxPythonSDK/CxOne/dto/Upload.py +17 -0
  402. CheckmarxPythonSDK/CxOne/dto/User.py +33 -0
  403. CheckmarxPythonSDK/CxOne/dto/UserConsentRepresentation.py +11 -0
  404. CheckmarxPythonSDK/CxOne/dto/UserFederationMapperRepresentation.py +10 -0
  405. CheckmarxPythonSDK/CxOne/dto/UserFederationProviderRepresentation.py +13 -0
  406. CheckmarxPythonSDK/CxOne/dto/UserProfileAttributeGroupMetadata.py +9 -0
  407. CheckmarxPythonSDK/CxOne/dto/UserProfileAttributeMetadata.py +12 -0
  408. CheckmarxPythonSDK/CxOne/dto/UserProfileMetadata.py +10 -0
  409. CheckmarxPythonSDK/CxOne/dto/UserRepresentation.py +38 -0
  410. CheckmarxPythonSDK/CxOne/dto/UserWithResource.py +40 -0
  411. CheckmarxPythonSDK/CxOne/dto/UsersWithResourcesResponse.py +18 -0
  412. CheckmarxPythonSDK/CxOne/dto/VersionsOut.py +23 -0
  413. CheckmarxPythonSDK/CxOne/dto/WebError.py +8 -0
  414. CheckmarxPythonSDK/CxOne/dto/WebHook.py +39 -0
  415. CheckmarxPythonSDK/CxOne/dto/WebHookConfig.py +26 -0
  416. CheckmarxPythonSDK/CxOne/dto/WebHookEvent.py +8 -0
  417. CheckmarxPythonSDK/CxOne/dto/WebHookInput.py +20 -0
  418. CheckmarxPythonSDK/CxOne/dto/WebHooksCollection.py +16 -0
  419. CheckmarxPythonSDK/CxOne/dto/WorkspaceQuery.py +16 -0
  420. CheckmarxPythonSDK/CxOne/dto/__init__.py +213 -0
  421. CheckmarxPythonSDK/CxOne/flagsAPI.py +50 -0
  422. CheckmarxPythonSDK/CxOne/healthCheckServiceAPI.py +82 -0
  423. CheckmarxPythonSDK/CxOne/kicsResultsAPI.py +85 -0
  424. CheckmarxPythonSDK/CxOne/logsAPI.py +44 -0
  425. CheckmarxPythonSDK/CxOne/projectsAPI.py +593 -0
  426. CheckmarxPythonSDK/CxOne/projectsOverviewAPI.py +206 -0
  427. CheckmarxPythonSDK/CxOne/queryEditorAPI.py +600 -0
  428. CheckmarxPythonSDK/CxOne/repoManagerAPI.py +1080 -0
  429. CheckmarxPythonSDK/CxOne/repoStoreServiceAPI.py +174 -0
  430. CheckmarxPythonSDK/CxOne/reportAPI.py +261 -0
  431. CheckmarxPythonSDK/CxOne/resultsSummaryAPI.py +82 -0
  432. CheckmarxPythonSDK/CxOne/sastBestFixLocationAPI.py +84 -0
  433. CheckmarxPythonSDK/CxOne/sastMigrationAPI.py +115 -0
  434. CheckmarxPythonSDK/CxOne/sastQueriesAPI.py +139 -0
  435. CheckmarxPythonSDK/CxOne/sastQueriesAuditAPI.py +511 -0
  436. CheckmarxPythonSDK/CxOne/sastQueriesAuditPresetsAPI.py +293 -0
  437. CheckmarxPythonSDK/CxOne/sastResourceManagementServiceAPI.py +100 -0
  438. CheckmarxPythonSDK/CxOne/sastResultsAPI.py +249 -0
  439. CheckmarxPythonSDK/CxOne/sastResultsPredicatesAPI.py +185 -0
  440. CheckmarxPythonSDK/CxOne/sastResultsSummaryAPI.py +205 -0
  441. CheckmarxPythonSDK/CxOne/sastScanMetadataServiceAPI.py +107 -0
  442. CheckmarxPythonSDK/CxOne/scaAPI.py +15 -0
  443. CheckmarxPythonSDK/CxOne/scanConfigurationAPI.py +391 -0
  444. CheckmarxPythonSDK/CxOne/scannersResultsAPI.py +85 -0
  445. CheckmarxPythonSDK/CxOne/scansAPI.py +533 -0
  446. CheckmarxPythonSDK/CxOne/uploadsAPI.py +71 -0
  447. CheckmarxPythonSDK/CxOne/versionsAPI.py +31 -0
  448. CheckmarxPythonSDK/CxOne/webhookAPI.py +153 -0
  449. CheckmarxPythonSDK/CxPortalSoapApiSDK/CxAuditWebService.py +140 -0
  450. CheckmarxPythonSDK/CxPortalSoapApiSDK/CxPortalWebService.py +1491 -0
  451. CheckmarxPythonSDK/CxPortalSoapApiSDK/__init__.py +42 -0
  452. CheckmarxPythonSDK/CxPortalSoapApiSDK/config.py +47 -0
  453. CheckmarxPythonSDK/CxPortalSoapApiSDK/sudsClient.py +116 -0
  454. CheckmarxPythonSDK/CxReporting/__init__.py +0 -0
  455. CheckmarxPythonSDK/CxReporting/api.py +124 -0
  456. CheckmarxPythonSDK/CxReporting/config.py +36 -0
  457. CheckmarxPythonSDK/CxReporting/dto/CreateReportDTO.py +91 -0
  458. CheckmarxPythonSDK/CxReporting/dto/CreateReportResponseDTO.py +11 -0
  459. CheckmarxPythonSDK/CxReporting/dto/FilterDTO.py +68 -0
  460. CheckmarxPythonSDK/CxReporting/dto/ReportStatusDTO.py +19 -0
  461. CheckmarxPythonSDK/CxReporting/dto/__init__.py +4 -0
  462. CheckmarxPythonSDK/CxRestAPISDK/AccessControlAPI.py +14 -0
  463. CheckmarxPythonSDK/CxRestAPISDK/ConfigurationAPI.py +99 -0
  464. CheckmarxPythonSDK/CxRestAPISDK/CustomFieldsAPI.py +53 -0
  465. CheckmarxPythonSDK/CxRestAPISDK/CustomTasksAPI.py +110 -0
  466. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/__init__.py +1 -0
  467. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/CxXMLResults.py +53 -0
  468. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/Line.py +8 -0
  469. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/Path.py +25 -0
  470. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/PathNode.py +16 -0
  471. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/Query.py +39 -0
  472. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/Result.py +43 -0
  473. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/Snippet.py +9 -0
  474. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/dto/__init__.py +7 -0
  475. CheckmarxPythonSDK/CxRestAPISDK/CxSastXML/xml_results.py +79 -0
  476. CheckmarxPythonSDK/CxRestAPISDK/DataRetentionAPI.py +208 -0
  477. CheckmarxPythonSDK/CxRestAPISDK/EnginesAPI.py +378 -0
  478. CheckmarxPythonSDK/CxRestAPISDK/GeneralAPI.py +644 -0
  479. CheckmarxPythonSDK/CxRestAPISDK/OsaAPI.py +421 -0
  480. CheckmarxPythonSDK/CxRestAPISDK/ProjectsAPI.py +1489 -0
  481. CheckmarxPythonSDK/CxRestAPISDK/QueriesAPI.py +143 -0
  482. CheckmarxPythonSDK/CxRestAPISDK/ScansAPI.py +1483 -0
  483. CheckmarxPythonSDK/CxRestAPISDK/TeamAPI.py +110 -0
  484. CheckmarxPythonSDK/CxRestAPISDK/__init__.py +22 -0
  485. CheckmarxPythonSDK/CxRestAPISDK/config.py +63 -0
  486. CheckmarxPythonSDK/CxRestAPISDK/exceptions/__init__.py +0 -0
  487. CheckmarxPythonSDK/CxRestAPISDK/osa/__init__.py +0 -0
  488. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaLibrary.py +69 -0
  489. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaLicense.py +38 -0
  490. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaLocation.py +21 -0
  491. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaMatchType.py +22 -0
  492. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaScanDetail.py +35 -0
  493. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaSeverity.py +20 -0
  494. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaState.py +22 -0
  495. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaSummaryReport.py +38 -0
  496. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaVulnerability.py +46 -0
  497. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaVulnerabilityComment.py +22 -0
  498. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/CxOsaVulnerabilityState.py +22 -0
  499. CheckmarxPythonSDK/CxRestAPISDK/osa/dto/__init__.py +11 -0
  500. CheckmarxPythonSDK/CxRestAPISDK/sast/__init__.py +0 -0
  501. CheckmarxPythonSDK/CxRestAPISDK/sast/configuration/__init__.py +0 -0
  502. CheckmarxPythonSDK/CxRestAPISDK/sast/configuration/dto/CxSASTConfig.py +22 -0
  503. CheckmarxPythonSDK/CxRestAPISDK/sast/configuration/dto/__init__.py +1 -0
  504. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/__init__.py +0 -0
  505. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/CxDataRetentionRequestStatus.py +23 -0
  506. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/CxDataRetentionRequestStatusStage.py +20 -0
  507. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/CxDefineDataRetentionDateRangeRequest.py +33 -0
  508. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/CxDefineDataRetentionNumberOfScansRequest.py +33 -0
  509. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/CxDefineDataRetentionResponse.py +20 -0
  510. CheckmarxPythonSDK/CxRestAPISDK/sast/dataRetention/dto/__init__.py +7 -0
  511. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/__init__.py +0 -0
  512. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/CxEngineConfiguration.py +22 -0
  513. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/CxEngineDedication.py +32 -0
  514. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/CxEngineServer.py +50 -0
  515. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/CxEngineServerStatus.py +16 -0
  516. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/CxRegisterEngineRequestBody.py +39 -0
  517. CheckmarxPythonSDK/CxRestAPISDK/sast/engines/dto/__init__.py +5 -0
  518. CheckmarxPythonSDK/CxRestAPISDK/sast/general/__init__.py +0 -0
  519. CheckmarxPythonSDK/CxRestAPISDK/sast/general/dto/CxServerLicenseData.py +68 -0
  520. CheckmarxPythonSDK/CxRestAPISDK/sast/general/dto/CxSupportedLanguage.py +20 -0
  521. CheckmarxPythonSDK/CxRestAPISDK/sast/general/dto/CxTranslationInput.py +16 -0
  522. CheckmarxPythonSDK/CxRestAPISDK/sast/general/dto/CxUserPersistence.py +24 -0
  523. CheckmarxPythonSDK/CxRestAPISDK/sast/general/dto/__init__.py +4 -0
  524. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/__init__.py +1 -0
  525. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxCreateProjectRequest.py +38 -0
  526. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxCreateProjectResponse.py +22 -0
  527. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxCredential.py +22 -0
  528. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxCustomRemoteSourceSettings.py +37 -0
  529. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxGitSettings.py +39 -0
  530. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystem.py +24 -0
  531. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemDetail.py +26 -0
  532. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemField.py +36 -0
  533. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemFieldAllowedValue.py +20 -0
  534. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemJira.py +45 -0
  535. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemJiraField.py +22 -0
  536. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxIssueTrackingSystemType.py +28 -0
  537. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxLink.py +20 -0
  538. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxPerforceSettings.py +41 -0
  539. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxProject.py +58 -0
  540. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxProjectExcludeSettings.py +26 -0
  541. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxProjectQueueSetting.py +20 -0
  542. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxSVNSettings.py +51 -0
  543. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxSharedRemoteSourceSettingsRequest.py +33 -0
  544. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxSharedRemoteSourceSettingsResponse.py +19 -0
  545. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxSourceSettingsLink.py +22 -0
  546. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxTFSSettings.py +38 -0
  547. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxURI.py +21 -0
  548. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxUpdateProjectNameTeamIdRequest.py +28 -0
  549. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/CxUpdateProjectRequest.py +46 -0
  550. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/__init__.py +30 -0
  551. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/customFields/CxCustomField.py +29 -0
  552. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/customFields/__init__.py +1 -0
  553. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/customTasks/CxCustomTask.py +28 -0
  554. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/customTasks/__init__.py +1 -0
  555. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/presets/CxPreset.py +28 -0
  556. CheckmarxPythonSDK/CxRestAPISDK/sast/projects/dto/presets/__init__.py +0 -0
  557. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/__init__.py +0 -0
  558. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxCreateNewScanResponse.py +20 -0
  559. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxDateAndTime.py +24 -0
  560. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxFinishedScanStatus.py +20 -0
  561. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxLanguageState.py +24 -0
  562. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxLanguageStatistic.py +38 -0
  563. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxPolicyFindingResponse.py +20 -0
  564. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxPolicyFindingsStatus.py +24 -0
  565. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxRegisterScanReportResponse.py +31 -0
  566. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxResultsStatistics.py +18 -0
  567. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanDetail.py +78 -0
  568. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanFailedGeneralQueries.py +16 -0
  569. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanFailedQueries.py +16 -0
  570. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanFileCountOfLanguage.py +13 -0
  571. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanParsedFiles.py +26 -0
  572. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanParsedFilesMetric.py +20 -0
  573. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanQueueDetail.py +58 -0
  574. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanReportStatus.py +37 -0
  575. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanReportXmlContent.py +139 -0
  576. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResult.py +308 -0
  577. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResultAttackVector.py +19 -0
  578. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResultAttackVectorByBFL.py +28 -0
  579. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResultLabelsFields.py +20 -0
  580. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResultNode.py +34 -0
  581. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanResultsPage.py +42 -0
  582. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanStage.py +20 -0
  583. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanState.py +34 -0
  584. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanStatistics.py +60 -0
  585. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanSucceededGeneralQueries.py +16 -0
  586. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxScanType.py +20 -0
  587. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxSchedulingSettings.py +33 -0
  588. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxStatisticsResult.py +61 -0
  589. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxStatus.py +23 -0
  590. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/CxStatusDetail.py +20 -0
  591. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/__init__.py +41 -0
  592. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxCreateScanSettingsRequestBody.py +75 -0
  593. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxCreateScanSettingsResponse.py +20 -0
  594. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxEmailNotification.py +22 -0
  595. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxLanguage.py +20 -0
  596. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxPostScanActionConditions.py +18 -0
  597. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/CxScanSettings.py +34 -0
  598. CheckmarxPythonSDK/CxRestAPISDK/sast/scans/dto/scanSettings/__init__.py +0 -0
  599. CheckmarxPythonSDK/CxRestAPISDK/team/__init__.py +0 -0
  600. CheckmarxPythonSDK/CxRestAPISDK/team/dto/CxTeam.py +25 -0
  601. CheckmarxPythonSDK/CxRestAPISDK/team/dto/__init__.py +1 -0
  602. CheckmarxPythonSDK/CxScaApiSDK/AccessControlAPI.py +15 -0
  603. CheckmarxPythonSDK/CxScaApiSDK/__init__.py +77 -0
  604. CheckmarxPythonSDK/CxScaApiSDK/api.py +3404 -0
  605. CheckmarxPythonSDK/CxScaApiSDK/config.py +31 -0
  606. CheckmarxPythonSDK/__init__.py +7 -0
  607. CheckmarxPythonSDK/__version__.py +1 -0
  608. CheckmarxPythonSDK/api_client.py +281 -0
  609. CheckmarxPythonSDK/configuration.py +26 -0
  610. CheckmarxPythonSDK/external/__init__.py +0 -0
  611. CheckmarxPythonSDK/external/sarif/__init__.py +1 -0
  612. CheckmarxPythonSDK/external/sarif/dto/CxCategory.py +50 -0
  613. CheckmarxPythonSDK/external/sarif/dto/CxSarifCategory.py +18 -0
  614. CheckmarxPythonSDK/external/sarif/dto/SarifArtifactLocation.py +11 -0
  615. CheckmarxPythonSDK/external/sarif/dto/SarifDescription.py +11 -0
  616. CheckmarxPythonSDK/external/sarif/dto/SarifDriver.py +31 -0
  617. CheckmarxPythonSDK/external/sarif/dto/SarifDriverRule.py +45 -0
  618. CheckmarxPythonSDK/external/sarif/dto/SarifLocation.py +14 -0
  619. CheckmarxPythonSDK/external/sarif/dto/SarifMessage.py +11 -0
  620. CheckmarxPythonSDK/external/sarif/dto/SarifMultiFormatMessageString.py +20 -0
  621. CheckmarxPythonSDK/external/sarif/dto/SarifPhysicalLocation.py +26 -0
  622. CheckmarxPythonSDK/external/sarif/dto/SarifPhysicalLocationPropertyBag.py +18 -0
  623. CheckmarxPythonSDK/external/sarif/dto/SarifRegion.py +21 -0
  624. CheckmarxPythonSDK/external/sarif/dto/SarifResultPropertyBag.py +27 -0
  625. CheckmarxPythonSDK/external/sarif/dto/SarifResultsCollection.py +24 -0
  626. CheckmarxPythonSDK/external/sarif/dto/SarifRun.py +27 -0
  627. CheckmarxPythonSDK/external/sarif/dto/SarifScanResult.py +38 -0
  628. CheckmarxPythonSDK/external/sarif/dto/SarifTaxa.py +31 -0
  629. CheckmarxPythonSDK/external/sarif/dto/SarifTaxaPropertyBag.py +53 -0
  630. CheckmarxPythonSDK/external/sarif/dto/SarifTaxaRelationship.py +11 -0
  631. CheckmarxPythonSDK/external/sarif/dto/SarifTaxaRelationshipTarget.py +24 -0
  632. CheckmarxPythonSDK/external/sarif/dto/SarifTaxonomy.py +31 -0
  633. CheckmarxPythonSDK/external/sarif/dto/SarifTool.py +14 -0
  634. CheckmarxPythonSDK/external/sarif/dto/SarifToolComponent.py +21 -0
  635. CheckmarxPythonSDK/external/sarif/dto/__init__.py +23 -0
  636. CheckmarxPythonSDK/external/sarif/sast_xml_to_sarif.py +337 -0
  637. CheckmarxPythonSDK/external/sarif/stig_mapping.py +292 -0
  638. CheckmarxPythonSDK/logger_setup.py +65 -0
  639. CheckmarxPythonSDK/rate_limiter.py +89 -0
  640. CheckmarxPythonSDK/utilities/CxError.py +81 -0
  641. CheckmarxPythonSDK/utilities/__init__.py +0 -0
  642. CheckmarxPythonSDK/utilities/compat.py +11 -0
  643. CheckmarxPythonSDK/utilities/configUtility.py +272 -0
  644. checkmarxpythonsdk-1.8.2.dist-info/LICENSE +674 -0
  645. checkmarxpythonsdk-1.8.2.dist-info/METADATA +227 -0
  646. checkmarxpythonsdk-1.8.2.dist-info/RECORD +648 -0
  647. checkmarxpythonsdk-1.8.2.dist-info/WHEEL +5 -0
  648. checkmarxpythonsdk-1.8.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1274 @@
1
+ from dataclasses import asdict
2
+ import json
3
+ import os
4
+ from typing import List, Union
5
+
6
+ from CheckmarxPythonSDK.api_client import ApiClient
7
+ from CheckmarxPythonSDK.utilities.compat import OK, NO_CONTENT, CREATED
8
+ from .accesscontrol.dto import (
9
+ AuthenticationProvider,
10
+ LDAPGroup,
11
+ LDAPRoleMapping,
12
+ LDAPServer,
13
+ LDAPTeamMapping,
14
+ MyProfile,
15
+ OIDCClient,
16
+ Permission,
17
+ Role,
18
+ SAMLIdentityProvider,
19
+ SAMLRoleMapping,
20
+ SAMLServiceProvider,
21
+ SAMLTeamMapping,
22
+ ServiceProvider,
23
+ SMTPSetting,
24
+ SystemLocale,
25
+ Team,
26
+ User,
27
+ WindowsDomain,
28
+ )
29
+ from .accesscontrol.dto.requests import (
30
+ FirstAdminUserRequest,
31
+ LDAPRoleMappingRequest,
32
+ LDAPServerRequest,
33
+ LDAPTeamMappingRequest,
34
+ MyProfileUpdateRequest,
35
+ OIDCClientRequest,
36
+ RoleRequest,
37
+ SMTPSettingRequest,
38
+ UserRequest,
39
+ )
40
+
41
+
42
+ class AccessControl:
43
+
44
+ def __init__(self, api_client: ApiClient = None, ac_url: str = None):
45
+ self.api_client = api_client
46
+ if ac_url is None:
47
+ self.ac_url = f"{api_client.configuration.server_base_url.rstrip('/')}/cxrestapi/auth"
48
+ else:
49
+ self.ac_url = ac_url
50
+
51
+ def get_all_assignable_users(self) -> List[User]:
52
+ url = self.ac_url + "/AssignableUsers"
53
+ response = self.api_client.call_api("GET", url)
54
+ return [User.from_dict(item) for item in response.json() or []]
55
+
56
+ def get_all_authentication_providers(self) -> List[AuthenticationProvider]:
57
+ url = self.ac_url + "/AuthenticationProviders"
58
+ response = self.api_client.call_api("GET", url)
59
+ if response.status_code == OK:
60
+ return [AuthenticationProvider.from_dict(item) for item in response.json()]
61
+ return []
62
+
63
+ def submit_first_admin_user(
64
+ self, username: str, password: str, first_name: str, last_name: str, email: str
65
+ ) -> bool:
66
+ req = FirstAdminUserRequest(
67
+ username=username,
68
+ password=password,
69
+ firstName=first_name,
70
+ lastName=last_name,
71
+ email=email,
72
+ )
73
+ url = self.ac_url + "/Users/FirstAdmin"
74
+ response = self.api_client.call_api(
75
+ "POST", url, data=json.dumps(asdict(req)),
76
+ headers={"Content-Type": "application/json"},
77
+ )
78
+ return response.status_code == CREATED
79
+
80
+ def get_admin_user_exists_confirmation(self) -> bool:
81
+ url = self.ac_url + "/Users/FirstAdminExistence"
82
+ response = self.api_client.call_api("GET", url)
83
+ return response.status_code == OK and bool(response.json().get("firstAdminExists"))
84
+
85
+ def get_all_ldap_role_mapping(self, ldap_server_id: int = None) -> List[LDAPRoleMapping]:
86
+ url = self.ac_url + "/LDAPRoleMappings"
87
+ if ldap_server_id:
88
+ url += "?ldapServerId={id}".format(id=ldap_server_id)
89
+ response = self.api_client.call_api("GET", url)
90
+ if response.status_code == OK:
91
+ return [LDAPRoleMapping.from_dict(item) for item in response.json()]
92
+ return []
93
+
94
+ def update_ldap_role_mapping(
95
+ self,
96
+ ldap_server_id: int,
97
+ role_id: int,
98
+ ldap_group_dn: str,
99
+ ldap_group_display_name: str,
100
+ ) -> bool:
101
+ req = LDAPRoleMappingRequest(
102
+ roleId=role_id,
103
+ ldapGroupDn=ldap_group_dn,
104
+ ldapGroupDisplayName=ldap_group_display_name,
105
+ )
106
+ url = self.ac_url + "/LDAPServers/{id}/RoleMappings".format(id=ldap_server_id)
107
+ response = self.api_client.call_api(
108
+ "PUT", url, data=json.dumps(asdict(req)),
109
+ headers={"Content-Type": "application/json"},
110
+ )
111
+ return response.status_code == NO_CONTENT
112
+
113
+ def delete_ldap_role_mapping(self, ldap_role_mapping_id: int) -> bool:
114
+ url = self.ac_url + "/LDAPRoleMappings/{id}".format(id=ldap_role_mapping_id)
115
+ response = self.api_client.call_api("DELETE", url)
116
+ return response.status_code == NO_CONTENT
117
+
118
+ def test_ldap_server_connection(
119
+ self,
120
+ host: str,
121
+ port: int,
122
+ username: str,
123
+ password: str,
124
+ use_ssl: bool,
125
+ verify_ssl_certificate: bool,
126
+ base_dn: str,
127
+ user_object_filter: str,
128
+ user_object_class: str,
129
+ username_attribute: str,
130
+ first_name_attribute: str,
131
+ last_name_attribute: str,
132
+ email_attribute: str,
133
+ synchronization_enabled: bool,
134
+ advanced_team_and_role_mapping_enabled: bool,
135
+ additional_group_dn: str,
136
+ group_object_class: str,
137
+ group_object_filter: str,
138
+ group_name_attribute: str,
139
+ group_members_attribute: str,
140
+ user_membership_attribute: str,
141
+ ) -> bool:
142
+ req = LDAPServerRequest(
143
+ host=host,
144
+ port=port,
145
+ username=username,
146
+ password=password,
147
+ useSsl=use_ssl,
148
+ verifySslCertificate=verify_ssl_certificate,
149
+ baseDn=base_dn,
150
+ userObjectFilter=user_object_filter,
151
+ userObjectClass=user_object_class,
152
+ usernameAttribute=username_attribute,
153
+ firstNameAttribute=first_name_attribute,
154
+ lastNameAttribute=last_name_attribute,
155
+ emailAttribute=email_attribute,
156
+ synchronizationEnabled=synchronization_enabled,
157
+ advancedTeamAndRoleMappingEnabled=advanced_team_and_role_mapping_enabled,
158
+ additionalGroupDn=additional_group_dn,
159
+ groupObjectClass=group_object_class,
160
+ groupObjectFilter=group_object_filter,
161
+ groupNameAttribute=group_name_attribute,
162
+ groupMembersAttribute=group_members_attribute,
163
+ userMembershipAttribute=user_membership_attribute,
164
+ )
165
+ url = self.ac_url + "/LDAPServers/TestConnection"
166
+ response = self.api_client.call_api(
167
+ "POST", url, data=json.dumps(asdict(req)),
168
+ headers={"Content-Type": "application/json"},
169
+ )
170
+ return response.status_code == OK
171
+
172
+ def get_user_entries_by_search_criteria(
173
+ self, ldap_server_id: int, username_contains_pattern: str = None
174
+ ) -> List[User]:
175
+ url = self.ac_url + "/LDAPServers/{id}/UserEntries".format(id=ldap_server_id)
176
+ if username_contains_pattern:
177
+ url += "?userNameContainsPattern={}".format(username_contains_pattern)
178
+ response = self.api_client.call_api("GET", url)
179
+ if response.status_code == OK:
180
+ return [User.from_dict(item) for item in response.json()]
181
+ return []
182
+
183
+ def get_group_entries_by_search_criteria(
184
+ self, ldap_server_id: int, name_contains_pattern: str
185
+ ) -> List[LDAPGroup]:
186
+ url = self.ac_url + "/LDAPServers/{id}/GroupEntries".format(id=ldap_server_id)
187
+ if name_contains_pattern:
188
+ url += "?nameContainsPattern={}".format(name_contains_pattern)
189
+ response = self.api_client.call_api("GET", url)
190
+ if response.status_code == OK:
191
+ return [LDAPGroup.from_dict(item) for item in response.json()]
192
+ return []
193
+
194
+ def get_all_ldap_servers(self) -> List[LDAPServer]:
195
+ url = self.ac_url + "/LDAPServers"
196
+ response = self.api_client.call_api("GET", url)
197
+ if response.status_code == OK:
198
+ return [LDAPServer.from_dict(item) for item in response.json()]
199
+ return []
200
+
201
+ def create_new_ldap_server(
202
+ self,
203
+ password: str,
204
+ active: bool,
205
+ name: str,
206
+ host: str,
207
+ port: int,
208
+ username: str,
209
+ use_ssl: bool,
210
+ verify_ssl_certificate: bool,
211
+ based_dn: str,
212
+ additional_user_dn: str,
213
+ user_object_filter: str,
214
+ user_object_class: str,
215
+ username_attribute: str,
216
+ first_name_attribute: str,
217
+ last_name_attribute: str,
218
+ email_attribute: str,
219
+ ldap_directory_type: str,
220
+ sso_enabled: bool,
221
+ synchronization_enabled: bool,
222
+ default_team_id: int,
223
+ default_role_id: int,
224
+ update_team_and_role_upon_login_enabled: bool,
225
+ periodical_synchronization_enabled: bool,
226
+ advanced_team_and_role_mapping_enabled: bool,
227
+ additional_group_dn: str,
228
+ group_object_class: str,
229
+ group_object_filter: str,
230
+ group_name_attribute: str,
231
+ group_members_attribute: str,
232
+ user_membership_attribute: str,
233
+ ) -> bool:
234
+ req = LDAPServerRequest(
235
+ password=password,
236
+ active=active,
237
+ name=name,
238
+ host=host,
239
+ port=port,
240
+ username=username,
241
+ useSsl=use_ssl,
242
+ verifySslCertificate=verify_ssl_certificate,
243
+ baseDn=based_dn,
244
+ additionalUserDn=additional_user_dn,
245
+ userObjectFilter=user_object_filter,
246
+ userObjectClass=user_object_class,
247
+ usernameAttribute=username_attribute,
248
+ firstNameAttribute=first_name_attribute,
249
+ lastNameAttribute=last_name_attribute,
250
+ emailAttribute=email_attribute,
251
+ ldapDirectoryType=ldap_directory_type,
252
+ ssoEnabled=sso_enabled,
253
+ synchronizationEnabled=synchronization_enabled,
254
+ defaultTeamId=default_team_id,
255
+ defaultRoleId=default_role_id,
256
+ updateTeamAndRoleUponLoginEnabled=update_team_and_role_upon_login_enabled,
257
+ periodicalSynchronizationEnabled=periodical_synchronization_enabled,
258
+ advancedTeamAndRoleMappingEnabled=advanced_team_and_role_mapping_enabled,
259
+ additionalGroupDn=additional_group_dn,
260
+ groupObjectClass=group_object_class,
261
+ groupObjectFilter=group_object_filter,
262
+ groupNameAttribute=group_name_attribute,
263
+ groupMembersAttribute=group_members_attribute,
264
+ userMembershipAttribute=user_membership_attribute,
265
+ )
266
+ url = self.ac_url + "/LDAPServers"
267
+ response = self.api_client.call_api(
268
+ "POST", url, data=json.dumps(asdict(req)),
269
+ headers={"Content-Type": "application/json"},
270
+ )
271
+ return response.status_code == CREATED
272
+
273
+ def get_ldap_server_by_id(self, ldap_server_id: int) -> LDAPServer:
274
+ url = self.ac_url + "/LDAPServers/{id}".format(id=ldap_server_id)
275
+ response = self.api_client.call_api("GET", url)
276
+ if response.status_code == OK:
277
+ return LDAPServer.from_dict(response.json())
278
+ return None
279
+
280
+ def update_ldap_server(
281
+ self,
282
+ ldap_server_id: int,
283
+ password: str,
284
+ active: bool,
285
+ name: str,
286
+ host: str,
287
+ port: int,
288
+ username: str,
289
+ use_ssl: bool,
290
+ verify_ssl_certificate: bool,
291
+ based_dn: str,
292
+ additional_user_dn: str,
293
+ user_object_filter: str,
294
+ user_object_class: str,
295
+ username_attribute: str,
296
+ first_name_attribute: str,
297
+ last_name_attribute: str,
298
+ email_attribute: str,
299
+ ldap_directory_type: str,
300
+ sso_enabled: bool,
301
+ synchronization_enabled: bool,
302
+ default_team_id: str,
303
+ default_role_id: str,
304
+ update_team_and_role_upon_login_enabled: bool,
305
+ periodical_synchronization_enabled: bool,
306
+ advanced_team_and_role_mapping_enabled: bool,
307
+ additional_group_dn: str,
308
+ group_object_class: str,
309
+ group_object_filter: str,
310
+ group_name_attribute: str,
311
+ group_members_attribute: str,
312
+ user_membership_attribute: str,
313
+ ) -> bool:
314
+ req = LDAPServerRequest(
315
+ password=password,
316
+ active=active,
317
+ name=name,
318
+ host=host,
319
+ port=port,
320
+ username=username,
321
+ useSsl=use_ssl,
322
+ verifySslCertificate=verify_ssl_certificate,
323
+ baseDn=based_dn,
324
+ additionalUserDn=additional_user_dn,
325
+ userObjectFilter=user_object_filter,
326
+ userObjectClass=user_object_class,
327
+ usernameAttribute=username_attribute,
328
+ firstNameAttribute=first_name_attribute,
329
+ lastNameAttribute=last_name_attribute,
330
+ emailAttribute=email_attribute,
331
+ ldapDirectoryType=ldap_directory_type,
332
+ ssoEnabled=sso_enabled,
333
+ synchronizationEnabled=synchronization_enabled,
334
+ defaultTeamId=default_team_id,
335
+ defaultRoleId=default_role_id,
336
+ updateTeamAndRoleUponLoginEnabled=update_team_and_role_upon_login_enabled,
337
+ periodicalSynchronizationEnabled=periodical_synchronization_enabled,
338
+ advancedTeamAndRoleMappingEnabled=advanced_team_and_role_mapping_enabled,
339
+ additionalGroupDn=additional_group_dn,
340
+ groupObjectClass=group_object_class,
341
+ groupObjectFilter=group_object_filter,
342
+ groupNameAttribute=group_name_attribute,
343
+ groupMembersAttribute=group_members_attribute,
344
+ userMembershipAttribute=user_membership_attribute,
345
+ )
346
+ url = self.ac_url + "/LDAPServers/{id}".format(id=ldap_server_id)
347
+ response = self.api_client.call_api(
348
+ "PUT", url, data=json.dumps(asdict(req)),
349
+ headers={"Content-Type": "application/json"},
350
+ )
351
+ return response.status_code == NO_CONTENT
352
+
353
+ def delete_ldap_server(self, ldap_server_id: int) -> bool:
354
+ url = self.ac_url + "/LDAPServers/{id}".format(id=ldap_server_id)
355
+ response = self.api_client.call_api("DELETE", url)
356
+ return response.status_code == NO_CONTENT
357
+
358
+ def get_ldap_team_mapping(
359
+ self, ldap_server_id: int = None, team_id: int = None
360
+ ) -> List[LDAPTeamMapping]:
361
+ url = self.ac_url + "/LDAPTeamMappings"
362
+ optionals = []
363
+ if ldap_server_id:
364
+ optionals.append("ldapServerId={id}".format(id=ldap_server_id))
365
+ if team_id:
366
+ optionals.append("teamId={id}".format(id=team_id))
367
+ if optionals:
368
+ url += "?" + "&".join(optionals)
369
+ response = self.api_client.call_api("GET", url)
370
+ if response.status_code == OK:
371
+ return [LDAPTeamMapping.from_dict(item) for item in response.json()]
372
+ return []
373
+
374
+ def update_ldap_team_mapping(
375
+ self,
376
+ ldap_server_id: int,
377
+ team_id: int,
378
+ ldap_group_dn: str,
379
+ ldap_group_display_name: str,
380
+ ) -> bool:
381
+ req = LDAPTeamMappingRequest(
382
+ teamId=team_id,
383
+ ldapGroupDn=ldap_group_dn,
384
+ ldapGroupDisplayName=ldap_group_display_name,
385
+ )
386
+ url = self.ac_url + "/LDAPServers/{id}/TeamMappings".format(id=ldap_server_id)
387
+ response = self.api_client.call_api(
388
+ "PUT", url, data=json.dumps(asdict(req)),
389
+ headers={"Content-Type": "application/json"},
390
+ )
391
+ return response.status_code == NO_CONTENT
392
+
393
+ def delete_ldap_team_mapping(self, ldap_team_mapping_id: int) -> bool:
394
+ url = self.ac_url + "/LDAPTeamMappings/{id}".format(id=ldap_team_mapping_id)
395
+ response = self.api_client.call_api("DELETE", url)
396
+ return response.status_code == NO_CONTENT
397
+
398
+ def get_my_profile(self) -> MyProfile:
399
+ url = self.ac_url + "/MyProfile"
400
+ response = self.api_client.call_api("GET", url)
401
+ if response.status_code == OK:
402
+ return MyProfile.from_dict(response.json())
403
+ return None
404
+
405
+ def update_my_profile(
406
+ self,
407
+ first_name: str,
408
+ last_name: str,
409
+ email: str,
410
+ phone_number: str,
411
+ cell_phone_number: str,
412
+ job_title: str,
413
+ other: str,
414
+ country: str,
415
+ locale_id: int,
416
+ ) -> bool:
417
+ req = MyProfileUpdateRequest(
418
+ firstName=first_name,
419
+ lastName=last_name,
420
+ email=email,
421
+ phoneNumber=phone_number,
422
+ cellPhoneNumber=cell_phone_number,
423
+ jobTitle=job_title,
424
+ other=other,
425
+ country=country,
426
+ localeId=locale_id,
427
+ )
428
+ url = self.ac_url + "/MyProfile"
429
+ response = self.api_client.call_api(
430
+ "PUT", url, data=json.dumps(asdict(req)),
431
+ headers={"Content-Type": "application/json"},
432
+ )
433
+ return response.status_code == NO_CONTENT
434
+
435
+ def get_all_oidc_clients(self) -> List[OIDCClient]:
436
+ url = self.ac_url + "/OIDCClients"
437
+ response = self.api_client.call_api("GET", url)
438
+ if response.status_code == OK:
439
+ return [OIDCClient.from_dict(item) for item in response.json()]
440
+ return []
441
+
442
+ def create_new_oidc_client(
443
+ self,
444
+ update_access_token_claims_on_refresh: bool,
445
+ access_token_type: int,
446
+ include_jwt_id: bool,
447
+ always_include_user_claims_in_id_token: bool,
448
+ client_id: str,
449
+ client_name: str,
450
+ allow_offline_access: bool,
451
+ client_secrets: List[str],
452
+ allow_grant_types: List[str],
453
+ allowed_scopes: List[str],
454
+ enabled: bool,
455
+ require_client_secret: bool,
456
+ redirect_uris: List[str],
457
+ post_logout_redirect_uris: List[str],
458
+ front_channel_logout_uri: str,
459
+ front_channel_logout_session_required: bool,
460
+ back_channel_logout_uri: str,
461
+ back_channel_logout_session_required: bool,
462
+ identity_token_life_time: int,
463
+ access_token_life_time: int,
464
+ authorization_code_life_time: int,
465
+ absolute_refresh_token_life_time: int,
466
+ sliding_refresh_token_life_time: int,
467
+ refresh_token_usage: int,
468
+ refresh_token_expiration: int,
469
+ allowed_cors_origins: List[str],
470
+ allowed_access_tokens_via_browser: bool,
471
+ claims: List[str],
472
+ client_claims_prefix: str,
473
+ ) -> bool:
474
+ req = OIDCClientRequest(
475
+ updateAccessTokenClaimsOnRefresh=update_access_token_claims_on_refresh,
476
+ accessTokenType=access_token_type,
477
+ includeJwtId=include_jwt_id,
478
+ alwaysIncludeUserClaimsInIdToken=always_include_user_claims_in_id_token,
479
+ clientId=client_id,
480
+ clientName=client_name,
481
+ allowOfflineAccess=allow_offline_access,
482
+ clientSecrets=client_secrets,
483
+ allowedGrantTypes=allow_grant_types,
484
+ allowedScopes=allowed_scopes,
485
+ enabled=enabled,
486
+ requireClientSecret=require_client_secret,
487
+ redirectUris=redirect_uris,
488
+ postLogoutRedirectUris=post_logout_redirect_uris,
489
+ frontChannelLogoutUri=front_channel_logout_uri,
490
+ frontChannelLogoutSessionRequired=front_channel_logout_session_required,
491
+ backChannelLogoutUri=back_channel_logout_uri,
492
+ backChannelLogoutSessionRequired=back_channel_logout_session_required,
493
+ identityTokenLifetime=identity_token_life_time,
494
+ accessTokenLifetime=access_token_life_time,
495
+ authorizationCodeLifetime=authorization_code_life_time,
496
+ absoluteRefreshTokenLifetime=absolute_refresh_token_life_time,
497
+ slidingRefreshTokenLifetime=sliding_refresh_token_life_time,
498
+ refreshTokenUsage=refresh_token_usage,
499
+ refreshTokenExpiration=refresh_token_expiration,
500
+ allowedCorsOrigins=allowed_cors_origins,
501
+ allowAccessTokensViaBrowser=allowed_access_tokens_via_browser,
502
+ claims=claims,
503
+ clientClaimsPrefix=client_claims_prefix,
504
+ )
505
+ url = self.ac_url + "/OIDCClients"
506
+ response = self.api_client.call_api(
507
+ "POST", url, data=json.dumps(asdict(req)),
508
+ headers={"Content-Type": "application/json"},
509
+ )
510
+ return response.status_code == CREATED
511
+
512
+ def get_oidc_client_by_id(self, oidc_client_id: int) -> OIDCClient:
513
+ url = self.ac_url + "/OIDCClients/{id}".format(id=oidc_client_id)
514
+ response = self.api_client.call_api("GET", url)
515
+ if response.status_code == OK:
516
+ return OIDCClient.from_dict(response.json())
517
+ return None
518
+
519
+ def update_an_oidc_client(
520
+ self,
521
+ oidc_client_id: int,
522
+ update_access_token_claims_on_refresh: bool,
523
+ access_token_type: int,
524
+ include_jwt_id: bool,
525
+ always_include_user_claims_in_id_token: bool,
526
+ client_id: str,
527
+ client_name: str,
528
+ allow_offline_access: bool,
529
+ client_secrets: List[str],
530
+ allow_grant_types: List[str],
531
+ allowed_scopes: List[str],
532
+ enabled: bool,
533
+ require_client_secret: bool,
534
+ redirect_uris: List[str],
535
+ post_logout_redirect_uris: List[str],
536
+ front_channel_logout_uri: str,
537
+ front_channel_logout_session_required: bool,
538
+ back_channel_logout_uri: str,
539
+ back_channel_logout_session_required: bool,
540
+ identity_token_life_time: int,
541
+ access_token_life_time: int,
542
+ authorization_code_life_time: int,
543
+ absolute_refresh_token_life_time: int,
544
+ sliding_refresh_token_life_time: int,
545
+ refresh_token_usage: int,
546
+ refresh_token_expiration: int,
547
+ allowed_cors_origins: List[str],
548
+ allowed_access_tokens_via_browser: bool,
549
+ claims: List[str],
550
+ client_claims_prefix: str,
551
+ ) -> bool:
552
+ req = OIDCClientRequest(
553
+ updateAccessTokenClaimsOnRefresh=update_access_token_claims_on_refresh,
554
+ accessTokenType=access_token_type,
555
+ includeJwtId=include_jwt_id,
556
+ alwaysIncludeUserClaimsInIdToken=always_include_user_claims_in_id_token,
557
+ clientId=client_id,
558
+ clientName=client_name,
559
+ allowOfflineAccess=allow_offline_access,
560
+ clientSecrets=client_secrets,
561
+ allowedGrantTypes=allow_grant_types,
562
+ allowedScopes=allowed_scopes,
563
+ enabled=enabled,
564
+ requireClientSecret=require_client_secret,
565
+ redirectUris=redirect_uris,
566
+ postLogoutRedirectUris=post_logout_redirect_uris,
567
+ frontChannelLogoutUri=front_channel_logout_uri,
568
+ frontChannelLogoutSessionRequired=front_channel_logout_session_required,
569
+ backChannelLogoutUri=back_channel_logout_uri,
570
+ backChannelLogoutSessionRequired=back_channel_logout_session_required,
571
+ identityTokenLifetime=identity_token_life_time,
572
+ accessTokenLifetime=access_token_life_time,
573
+ authorizationCodeLifetime=authorization_code_life_time,
574
+ absoluteRefreshTokenLifetime=absolute_refresh_token_life_time,
575
+ slidingRefreshTokenLifetime=sliding_refresh_token_life_time,
576
+ refreshTokenUsage=refresh_token_usage,
577
+ refreshTokenExpiration=refresh_token_expiration,
578
+ allowedCorsOrigins=allowed_cors_origins,
579
+ allowAccessTokensViaBrowser=allowed_access_tokens_via_browser,
580
+ claims=claims,
581
+ clientClaimsPrefix=client_claims_prefix,
582
+ )
583
+ url = self.ac_url + "/OIDCClients/{id}".format(id=oidc_client_id)
584
+ response = self.api_client.call_api(
585
+ "PUT", url, data=json.dumps(asdict(req)),
586
+ headers={"Content-Type": "application/json"},
587
+ )
588
+ return response.status_code == NO_CONTENT
589
+
590
+ def delete_an_oidc_client(self, oidc_client_id: int) -> bool:
591
+ url = self.ac_url + "/OIDCClients/{id}".format(id=oidc_client_id)
592
+ response = self.api_client.call_api("DELETE", url)
593
+ return response.status_code == NO_CONTENT
594
+
595
+ def get_all_permissions(self) -> List[Permission]:
596
+ url = self.ac_url + "/Permissions"
597
+ response = self.api_client.call_api("GET", url)
598
+ if response.status_code == OK:
599
+ return [Permission.from_dict(item) for item in response.json()]
600
+ return []
601
+
602
+ def get_permission_by_id(self, permission_id: int) -> Permission:
603
+ url = self.ac_url + "/Permissions/{id}".format(id=permission_id)
604
+ response = self.api_client.call_api("GET", url)
605
+ if response.status_code == OK:
606
+ return Permission.from_dict(response.json())
607
+ return None
608
+
609
+ def get_all_roles(self) -> List[Role]:
610
+ url = self.ac_url + "/Roles"
611
+ response = self.api_client.call_api("GET", url)
612
+ if response.status_code == OK:
613
+ return [Role.from_dict(item) for item in response.json()]
614
+ return []
615
+
616
+ def get_role_id_by_name(
617
+ self, name: Union[str, List[str]]
618
+ ) -> Union[int, List[int], None]:
619
+ all_roles = self.get_all_roles()
620
+
621
+ if isinstance(name, str):
622
+ names = [name]
623
+ elif isinstance(name, list):
624
+ names = name
625
+ else:
626
+ return None
627
+
628
+ roles = [item for item in all_roles if item.name in names]
629
+
630
+ if not roles:
631
+ return None
632
+ if len(roles) == 1:
633
+ return roles[0].id
634
+ return [role.id for role in roles]
635
+
636
+ def create_new_role(self, name: str, description: str, permission_ids: List[int]) -> bool:
637
+ req = RoleRequest(name=name, description=description, permissionIds=permission_ids)
638
+ url = self.ac_url + "/Roles"
639
+ response = self.api_client.call_api(
640
+ "POST", url, data=json.dumps(asdict(req)),
641
+ headers={"Content-Type": "application/json"},
642
+ )
643
+ return response.status_code == CREATED
644
+
645
+ def get_role_by_id(self, role_id: int) -> Role:
646
+ url = self.ac_url + "/Roles/{id}".format(id=role_id)
647
+ response = self.api_client.call_api("GET", url)
648
+ if response.status_code == OK:
649
+ return Role.from_dict(response.json())
650
+ return None
651
+
652
+ def update_a_role(
653
+ self, role_id: int, name: str, description: str, permission_ids: List[int]
654
+ ) -> bool:
655
+ req = RoleRequest(name=name, description=description, permissionIds=permission_ids)
656
+ url = self.ac_url + "/Roles/{id}".format(id=role_id)
657
+ response = self.api_client.call_api(
658
+ "PUT", url, data=json.dumps(asdict(req)),
659
+ headers={"Content-Type": "application/json"},
660
+ )
661
+ return response.status_code == NO_CONTENT
662
+
663
+ def delete_a_role(self, role_id: int) -> bool:
664
+ url = self.ac_url + "/Roles/{id}".format(id=role_id)
665
+ response = self.api_client.call_api("DELETE", url)
666
+ return response.status_code == NO_CONTENT
667
+
668
+ def get_all_saml_identity_providers(self) -> List[SAMLIdentityProvider]:
669
+ url = self.ac_url + "/SamlIdentityProviders"
670
+ response = self.api_client.call_api("GET", url)
671
+ if response.status_code == OK:
672
+ return [SAMLIdentityProvider.from_dict(item) for item in response.json()]
673
+ return []
674
+
675
+ def create_new_saml_identity_provider(
676
+ self,
677
+ certificate_file_path: str,
678
+ active: bool,
679
+ name: str,
680
+ issuer: str,
681
+ login_url: str,
682
+ logout_url: str,
683
+ error_url: str,
684
+ sign_authn_request: bool,
685
+ authn_request_binding: str,
686
+ is_manual_management: bool,
687
+ default_team_id: int,
688
+ default_role_id: int,
689
+ ) -> bool:
690
+ file_name = os.path.basename(certificate_file_path)
691
+ url = self.ac_url + "/SamlIdentityProviders"
692
+ response = self.api_client.call_api(
693
+ "POST",
694
+ url,
695
+ files={"CertificateFile": (file_name, open(certificate_file_path, "rb"))},
696
+ data={
697
+ "Active": str(active),
698
+ "Name": name,
699
+ "Issuer": issuer,
700
+ "LoginUrl": login_url,
701
+ "LogoutUrl": logout_url,
702
+ "ErrorUrl": error_url,
703
+ "SignAuthnRequest": str(sign_authn_request),
704
+ "AuthnRequestBinding": authn_request_binding,
705
+ "IsManualManagement": str(is_manual_management),
706
+ "DefaultTeamId": str(default_team_id),
707
+ "DefaultRoleId": str(default_role_id),
708
+ },
709
+ )
710
+ return response.status_code == CREATED
711
+
712
+ def get_saml_identity_provider_by_id(self, saml_identity_provider_id: int) -> SAMLIdentityProvider:
713
+ url = self.ac_url + "/SamlIdentityProviders/{id}".format(id=saml_identity_provider_id)
714
+ response = self.api_client.call_api("GET", url)
715
+ if response.status_code == OK:
716
+ return SAMLIdentityProvider.from_dict(response.json())
717
+ return None
718
+
719
+ def update_new_saml_identity_provider(
720
+ self,
721
+ saml_identity_provider_id: int,
722
+ certificate_file: str,
723
+ active: bool,
724
+ name: str,
725
+ issuer: str,
726
+ login_url: str,
727
+ logout_url: str,
728
+ error_url: str,
729
+ sign_authn_request: bool,
730
+ authn_request_binding: str,
731
+ is_manual_management: bool,
732
+ default_team_id: int,
733
+ default_role_id: int,
734
+ ) -> bool:
735
+ file_name = os.path.basename(certificate_file)
736
+ url = self.ac_url + "/SamlIdentityProviders/{id}".format(id=saml_identity_provider_id)
737
+ response = self.api_client.call_api(
738
+ "PUT",
739
+ url,
740
+ files={"CertificateFile": (file_name, open(certificate_file, "rb"))},
741
+ data={
742
+ "Active": str(active),
743
+ "Name": name,
744
+ "Issuer": issuer,
745
+ "LoginUrl": login_url,
746
+ "LogoutUrl": logout_url,
747
+ "ErrorUrl": error_url,
748
+ "SignAuthnRequest": str(sign_authn_request),
749
+ "AuthnRequestBinding": authn_request_binding,
750
+ "IsManualManagement": str(is_manual_management),
751
+ "DefaultTeamId": str(default_team_id),
752
+ "DefaultRoleId": str(default_role_id),
753
+ },
754
+ )
755
+ return response.status_code == NO_CONTENT
756
+
757
+ def delete_a_saml_identity_provider(self, saml_identity_provider_id: int) -> bool:
758
+ url = self.ac_url + "/SamlIdentityProviders/{id}".format(id=saml_identity_provider_id)
759
+ response = self.api_client.call_api("DELETE", url)
760
+ return response.status_code == NO_CONTENT
761
+
762
+ def get_details_of_saml_role_mappings(self, saml_identity_provider_id: int = None) -> List[SAMLRoleMapping]:
763
+ url = self.ac_url + "/SamlRoleMappings"
764
+ if saml_identity_provider_id:
765
+ url += "?samlProviderId={}".format(saml_identity_provider_id)
766
+ response = self.api_client.call_api("GET", url)
767
+ if response.status_code == OK:
768
+ return [SAMLRoleMapping.from_dict(item) for item in response.json()]
769
+ return []
770
+
771
+ def set_saml_group_and_role_mapping_details(
772
+ self,
773
+ saml_identity_provider_id: int,
774
+ sample_role_mapping_details: List[dict] = (),
775
+ ) -> bool:
776
+ put_data = json.dumps(
777
+ [
778
+ {"roleName": item.get("roleName"), "samlAttributeValue": item.get("samlAttributeValue")}
779
+ for item in sample_role_mapping_details
780
+ ]
781
+ )
782
+ url = self.ac_url + "/SamlIdentityProviders/{samlProviderId}/RoleMappings".format(
783
+ samlProviderId=saml_identity_provider_id
784
+ )
785
+ response = self.api_client.call_api(
786
+ "PUT", url, data=put_data, headers={"Content-Type": "application/json"}
787
+ )
788
+ return response.status_code == NO_CONTENT
789
+
790
+ def get_saml_service_provider_metadata(self) -> bytes:
791
+ url = self.ac_url + "/SamlServiceProvider/metadata"
792
+ response = self.api_client.call_api("GET", url)
793
+ if response.status_code == OK:
794
+ return response.content
795
+ return None
796
+
797
+ def get_saml_service_provider(self) -> SAMLServiceProvider:
798
+ url = self.ac_url + "/SamlServiceProvider"
799
+ response = self.api_client.call_api("GET", url)
800
+ if response.status_code == OK:
801
+ return SAMLServiceProvider.from_dict(response.json())
802
+ return None
803
+
804
+ def update_a_saml_service_provider(
805
+ self, certificate_file: str, certificate_password: str, issuer: str
806
+ ) -> bool:
807
+ file_name = os.path.basename(certificate_file)
808
+ url = self.ac_url + "/SamlServiceProvider"
809
+ response = self.api_client.call_api(
810
+ "PUT",
811
+ url,
812
+ files={"CertificateFile": (file_name, open(certificate_file, "rb"))},
813
+ data={"CertificatePassword": certificate_password, "Issuer": issuer},
814
+ )
815
+ return response.status_code == NO_CONTENT
816
+
817
+ def get_details_of_saml_team_mappings(self, saml_identity_provider_id: int = None) -> List[SAMLTeamMapping]:
818
+ url = self.ac_url + "/SamlTeamMappings"
819
+ if saml_identity_provider_id:
820
+ url += "?samlProviderId={}".format(saml_identity_provider_id)
821
+ response = self.api_client.call_api("GET", url)
822
+ if response.status_code == OK:
823
+ return [SAMLTeamMapping.from_dict(item) for item in response.json()]
824
+ return []
825
+
826
+ def set_saml_group_and_team_mapping_details(
827
+ self, saml_identity_provider_id: int, saml_team_mapping_details: List[dict] = ()
828
+ ) -> bool:
829
+ put_data = json.dumps(
830
+ [
831
+ {"teamFullPath": item.get("teamFullPath"), "samlAttributeValue": item.get("samlAttributeValue")}
832
+ for item in saml_team_mapping_details
833
+ ]
834
+ )
835
+ url = self.ac_url + "/SamlIdentityProviders/{id}/TeamMappings".format(id=saml_identity_provider_id)
836
+ response = self.api_client.call_api(
837
+ "PUT", url, data=put_data, headers={"Content-Type": "application/json"}
838
+ )
839
+ return response.status_code == NO_CONTENT
840
+
841
+ def get_all_service_providers(self) -> List[ServiceProvider]:
842
+ url = self.ac_url + "/ServiceProviders"
843
+ response = self.api_client.call_api("GET", url)
844
+ if response.status_code == OK:
845
+ return [ServiceProvider.from_dict(item) for item in response.json()]
846
+ return []
847
+
848
+ def get_service_provider_by_id(self, service_provider_id: int) -> ServiceProvider:
849
+ url = self.ac_url + "/ServiceProviders/{id}".format(id=service_provider_id)
850
+ response = self.api_client.call_api("GET", url)
851
+ if response.status_code == OK:
852
+ return ServiceProvider.from_dict(response.json())
853
+ return None
854
+
855
+ def get_all_smtp_settings(self) -> List[SMTPSetting]:
856
+ url = self.ac_url + "/SMTPSettings"
857
+ response = self.api_client.call_api("GET", url)
858
+ if response.status_code == OK:
859
+ return [SMTPSetting.from_dict(item) for item in response.json()]
860
+ return []
861
+
862
+ def create_smtp_settings(
863
+ self,
864
+ password: str,
865
+ host: str,
866
+ port: int,
867
+ encryption_type: str,
868
+ from_address: str,
869
+ use_default_credentials: str,
870
+ username: str,
871
+ ) -> bool:
872
+ req = SMTPSettingRequest(
873
+ password=password,
874
+ host=host,
875
+ port=port,
876
+ encryptionType=encryption_type,
877
+ fromAddress=from_address,
878
+ useDefaultCredentials=use_default_credentials,
879
+ username=username,
880
+ )
881
+ url = self.ac_url + "/SMTPSettings"
882
+ response = self.api_client.call_api(
883
+ "POST", url, data=json.dumps(asdict(req)),
884
+ headers={"Content-Type": "application/json"},
885
+ )
886
+ return response.status_code == CREATED
887
+
888
+ def get_smtp_settings_by_id(self, smtp_settings_id: int) -> SMTPSetting:
889
+ url = self.ac_url + "/SMTPSettings/{id}".format(id=smtp_settings_id)
890
+ response = self.api_client.call_api("GET", url)
891
+ if response.status_code == OK:
892
+ return SMTPSetting.from_dict(response.json())
893
+ return None
894
+
895
+ def update_smtp_settings(
896
+ self,
897
+ smtp_settings_id: int,
898
+ password: str,
899
+ host: str,
900
+ port: int,
901
+ encryption_type: str,
902
+ from_address: str,
903
+ use_default_credentials: str,
904
+ username: str,
905
+ ) -> bool:
906
+ req = SMTPSettingRequest(
907
+ password=password,
908
+ host=host,
909
+ port=port,
910
+ encryptionType=encryption_type,
911
+ fromAddress=from_address,
912
+ useDefaultCredentials=use_default_credentials,
913
+ username=username,
914
+ )
915
+ url = self.ac_url + "/SMTPSettings/{id}".format(id=smtp_settings_id)
916
+ response = self.api_client.call_api(
917
+ "PUT", url, data=json.dumps(asdict(req)),
918
+ headers={"Content-Type": "application/json"},
919
+ )
920
+ return response.status_code == NO_CONTENT
921
+
922
+ def delete_smtp_settings(self, smtp_settings_id: int) -> bool:
923
+ url = self.ac_url + "/SMTPSettings/{id}".format(id=smtp_settings_id)
924
+ response = self.api_client.call_api("DELETE", url)
925
+ return response.status_code == NO_CONTENT
926
+
927
+ def test_smtp_connection(
928
+ self,
929
+ receiver_email: str,
930
+ password: str,
931
+ host: str,
932
+ port: int,
933
+ encryption_type: str,
934
+ from_address: str,
935
+ use_default_credentials: str,
936
+ username: str,
937
+ ) -> bool:
938
+ req = SMTPSettingRequest(
939
+ recieverEmail=receiver_email,
940
+ password=password,
941
+ host=host,
942
+ port=port,
943
+ encryptionType=encryption_type,
944
+ fromAddress=from_address,
945
+ useDefaultCredentials=use_default_credentials,
946
+ username=username,
947
+ )
948
+ url = self.ac_url + "/SMTPSettings/testconnection"
949
+ response = self.api_client.call_api(
950
+ "POST", url, data=json.dumps(asdict(req)),
951
+ headers={"Content-Type": "application/json"},
952
+ )
953
+ return response.status_code == OK
954
+
955
+ def get_all_system_locales(self) -> List[SystemLocale]:
956
+ url = self.ac_url + "/SystemLocales"
957
+ response = self.api_client.call_api("GET", url)
958
+ if response.status_code == OK:
959
+ return [SystemLocale.from_dict(item) for item in response.json()]
960
+ return []
961
+
962
+ def get_members_by_team_id(self, team_id: int) -> List[User]:
963
+ url = self.ac_url + "/Teams/{id}/Users".format(id=team_id)
964
+ response = self.api_client.call_api("GET", url)
965
+ if response.status_code == OK:
966
+ return [User.from_dict(item) for item in response.json()]
967
+ return []
968
+
969
+ def update_members_by_team_id(self, team_id: int, user_ids: List[int]) -> bool:
970
+ put_data = json.dumps({"userIds": user_ids})
971
+ url = self.ac_url + "/Teams/{teamId}/Users".format(teamId=team_id)
972
+ response = self.api_client.call_api(
973
+ "PUT", url, data=put_data, headers={"Content-Type": "application/json"}
974
+ )
975
+ return response.status_code == NO_CONTENT
976
+
977
+ def add_a_user_to_a_team(self, team_id: int, user_id: int) -> bool:
978
+ url = self.ac_url + "/Teams/{teamId}/Users/{userId}".format(teamId=team_id, userId=user_id)
979
+ response = self.api_client.call_api("POST", url, data=None)
980
+ return response.status_code == NO_CONTENT
981
+
982
+ def delete_a_member_from_a_team(self, team_id: int, user_id: int) -> bool:
983
+ url = self.ac_url + "/Teams/{teamId}/Users/{userId}".format(teamId=team_id, userId=user_id)
984
+ response = self.api_client.call_api("DELETE", url)
985
+ return response.status_code == NO_CONTENT
986
+
987
+ def get_all_teams(self) -> List[Team]:
988
+ url = self.ac_url + "/Teams"
989
+ response = self.api_client.call_api("GET", url)
990
+ if response.status_code == OK:
991
+ return [Team.from_dict(item) for item in response.json()]
992
+ return []
993
+
994
+ def get_team_id_by_full_name(self, full_name: str) -> int:
995
+ all_teams = self.get_all_teams()
996
+ team = [item for item in all_teams if item.full_name == full_name]
997
+ return team[0].id if team else None
998
+
999
+ def create_new_team(self, name: str, parent_id: int) -> bool:
1000
+ post_data = json.dumps({"name": name, "parentId": parent_id})
1001
+ url = self.ac_url + "/Teams"
1002
+ response = self.api_client.call_api(
1003
+ "POST", url, data=post_data, headers={"Content-Type": "application/json"}
1004
+ )
1005
+ return response.status_code == CREATED
1006
+
1007
+ def create_teams_recursively(self, team_full_name: str) -> List[int]:
1008
+ result = []
1009
+ if isinstance(team_full_name, str) and team_full_name.startswith("/CxServer"):
1010
+ teams = team_full_name.split("/")
1011
+ length = len(teams)
1012
+ parent_team_id = self.get_team_id_by_full_name("/CxServer")
1013
+ for index in list(range(2, length)):
1014
+ child_team_full_name = "/".join(teams[: index + 1])
1015
+ child_team_name = teams[index]
1016
+ team_id = self.get_team_id_by_full_name(child_team_full_name)
1017
+ if team_id is None:
1018
+ self.create_new_team(child_team_name, parent_team_id)
1019
+ team_id = self.get_team_id_by_full_name(child_team_full_name)
1020
+ result.append(team_id)
1021
+ parent_team_id = team_id
1022
+ return result
1023
+
1024
+ def get_team_by_id(self, team_id: int) -> Team:
1025
+ url = self.ac_url + "/Teams/{id}".format(id=team_id)
1026
+ response = self.api_client.call_api("GET", url)
1027
+ if response.status_code == OK:
1028
+ return Team.from_dict(response.json())
1029
+ return None
1030
+
1031
+ def update_a_team(self, team_id: int, name: str, parent_id: int) -> bool:
1032
+ put_data = json.dumps({"name": name, "parentId": parent_id})
1033
+ url = self.ac_url + "/Teams/{id}".format(id=team_id)
1034
+ response = self.api_client.call_api(
1035
+ "PUT", url, data=put_data, headers={"Content-Type": "application/json"}
1036
+ )
1037
+ return response.status_code == NO_CONTENT
1038
+
1039
+ def delete_a_team(self, team_id: int) -> bool:
1040
+ url = self.ac_url + "/Teams/{id}".format(id=team_id)
1041
+ response = self.api_client.call_api("DELETE", url)
1042
+ return response.status_code == NO_CONTENT
1043
+
1044
+ def generate_a_new_token_signing_certificate(self) -> bool:
1045
+ url = self.ac_url + "/TokenSigningCertificateGeneration"
1046
+ response = self.api_client.call_api("POST", url)
1047
+ return response.status_code == CREATED
1048
+
1049
+ def upload_a_new_token_signing_certificate(
1050
+ self, certificate_file_path: str, certificate_password: str
1051
+ ) -> bool:
1052
+ url = self.ac_url + "/TokenSigningCertificate"
1053
+ file_name = os.path.basename(certificate_file_path)
1054
+ response = self.api_client.call_api(
1055
+ "POST",
1056
+ url,
1057
+ files={
1058
+ "CertificateFile": (file_name, open(certificate_file_path, "rb"), "application/zip")
1059
+ },
1060
+ data={"CertificatePassword": str(certificate_password)},
1061
+ )
1062
+ return response.status_code == CREATED
1063
+
1064
+ def get_all_users(self) -> List[User]:
1065
+ url = self.ac_url + "/Users"
1066
+ response = self.api_client.call_api("GET", url)
1067
+ if response.status_code == OK:
1068
+ return [User.from_dict(item) for item in response.json()]
1069
+ return []
1070
+
1071
+ def get_user_id_by_name(self, username: str) -> int:
1072
+ all_users = self.get_all_users()
1073
+ user = [item for item in all_users if item.username == username]
1074
+ return user[0].id if user else None
1075
+
1076
+ def create_new_user(
1077
+ self,
1078
+ username: str,
1079
+ password: str,
1080
+ role_ids: List[int],
1081
+ team_ids: List[int],
1082
+ authentication_provider_id: int,
1083
+ first_name: str,
1084
+ last_name: str,
1085
+ email: str,
1086
+ phone_number: str,
1087
+ cell_phone_number: str,
1088
+ job_title: str,
1089
+ other: str,
1090
+ country: str,
1091
+ active: str,
1092
+ expiration_date: str,
1093
+ allowed_ip_list: str,
1094
+ locale_id: int,
1095
+ ) -> bool:
1096
+ req = UserRequest(
1097
+ username=username,
1098
+ password=password,
1099
+ roleIds=role_ids,
1100
+ teamIds=team_ids,
1101
+ authenticationProviderId=authentication_provider_id,
1102
+ firstName=first_name,
1103
+ lastName=last_name,
1104
+ email=email,
1105
+ phoneNumber=phone_number,
1106
+ cellPhoneNumber=cell_phone_number,
1107
+ jobTitle=job_title,
1108
+ other=other,
1109
+ country=country,
1110
+ active=active,
1111
+ expirationDate=expiration_date,
1112
+ allowedIpList=allowed_ip_list,
1113
+ localeId=locale_id,
1114
+ )
1115
+ url = self.ac_url + "/Users"
1116
+ response = self.api_client.call_api(
1117
+ "POST", url, data=json.dumps(asdict(req)),
1118
+ headers={"Content-Type": "application/json"},
1119
+ )
1120
+ return response.status_code == CREATED
1121
+
1122
+ def get_user_by_id(self, user_id: int) -> User:
1123
+ url = self.ac_url + "/Users/{id}".format(id=user_id)
1124
+ response = self.api_client.call_api("GET", url)
1125
+ if response.status_code == OK:
1126
+ return User.from_dict(response.json())
1127
+ return None
1128
+
1129
+ def update_a_user(
1130
+ self,
1131
+ user_id: int,
1132
+ role_ids: List[int],
1133
+ team_ids: List[int],
1134
+ first_name: str,
1135
+ last_name: str,
1136
+ email: str,
1137
+ phone_number: str,
1138
+ cell_phone_number: str,
1139
+ job_title: str,
1140
+ other: str,
1141
+ country: str,
1142
+ active: str,
1143
+ expiration_date: str,
1144
+ allowed_ip_list: str,
1145
+ locale_id: int,
1146
+ ) -> bool:
1147
+ req = UserRequest(
1148
+ roleIds=role_ids,
1149
+ teamIds=team_ids,
1150
+ firstName=first_name,
1151
+ lastName=last_name,
1152
+ email=email,
1153
+ phoneNumber=phone_number,
1154
+ cellPhoneNumber=cell_phone_number,
1155
+ jobTitle=job_title,
1156
+ other=other,
1157
+ country=country,
1158
+ active=active,
1159
+ expirationDate=expiration_date,
1160
+ allowedIpList=allowed_ip_list,
1161
+ localeId=locale_id,
1162
+ )
1163
+ url = self.ac_url + "/Users/{id}".format(id=user_id)
1164
+ response = self.api_client.call_api(
1165
+ "PUT", url, data=json.dumps(asdict(req)),
1166
+ headers={"Content-Type": "application/json"},
1167
+ )
1168
+ return response.status_code == NO_CONTENT
1169
+
1170
+ def delete_a_user(self, user_id: int) -> bool:
1171
+ url = self.ac_url + "/Users/{id}".format(id=user_id)
1172
+ response = self.api_client.call_api("DELETE", url)
1173
+ return response.status_code == NO_CONTENT
1174
+
1175
+ def migrate_existing_user(
1176
+ self,
1177
+ creation_date: str,
1178
+ username: str,
1179
+ password: str,
1180
+ role_ids: List[str],
1181
+ team_ids: List[str],
1182
+ authentication_provider_id: int,
1183
+ first_name: str,
1184
+ last_name: str,
1185
+ email: str,
1186
+ phone_number: str,
1187
+ cell_phone_number: str,
1188
+ job_title: str,
1189
+ other: str,
1190
+ country: str,
1191
+ active: str,
1192
+ expiration_date: str,
1193
+ allowed_ip_list: List[str],
1194
+ locale_id: str,
1195
+ ) -> bool:
1196
+ req = UserRequest(
1197
+ creationDate=creation_date,
1198
+ username=username,
1199
+ password=password,
1200
+ roleIds=role_ids,
1201
+ teamIds=team_ids,
1202
+ authenticationProviderId=authentication_provider_id,
1203
+ firstName=first_name,
1204
+ lastName=last_name,
1205
+ email=email,
1206
+ phoneNumber=phone_number,
1207
+ cellPhoneNumber=cell_phone_number,
1208
+ jobTitle=job_title,
1209
+ other=other,
1210
+ country=country,
1211
+ active=active,
1212
+ expirationDate=expiration_date,
1213
+ allowedIpList=allowed_ip_list,
1214
+ localeId=locale_id,
1215
+ )
1216
+ url = self.ac_url + "/Users/migration"
1217
+ response = self.api_client.call_api(
1218
+ "POST", url, data=json.dumps(asdict(req)),
1219
+ headers={"Content-Type": "application/json"},
1220
+ )
1221
+ return response.status_code == CREATED
1222
+
1223
+ def get_all_windows_domains(self) -> List[WindowsDomain]:
1224
+ url = self.ac_url + "/WindowsDomains"
1225
+ response = self.api_client.call_api("GET", url)
1226
+ if response.status_code == OK:
1227
+ return [WindowsDomain.from_dict(item) for item in response.json()]
1228
+ return []
1229
+
1230
+ def get_windows_domain_id_by_name(self, name: str) -> int:
1231
+ windows_domains = self.get_all_windows_domains()
1232
+ domains = [item for item in windows_domains if item.name == name]
1233
+ return domains[0].id if domains else None
1234
+
1235
+ def create_a_new_windows_domain(self, name: str, full_qualified_name: str) -> bool:
1236
+ post_data = json.dumps({"name": name, "FullyQualifiedName": full_qualified_name})
1237
+ url = self.ac_url + "/WindowsDomains"
1238
+ response = self.api_client.call_api(
1239
+ "POST", url, data=post_data, headers={"Content-Type": "application/json"}
1240
+ )
1241
+ return response.status_code == CREATED
1242
+
1243
+ def get_windows_domain_by_id(self, windows_domain_id: int) -> WindowsDomain:
1244
+ url = self.ac_url + "/WindowsDomains/{id}".format(id=windows_domain_id)
1245
+ response = self.api_client.call_api("GET", url)
1246
+ if response.status_code == OK:
1247
+ return WindowsDomain.from_dict(response.json())
1248
+ return None
1249
+
1250
+ def update_a_windows_domain(
1251
+ self, windows_domain_id: int, name: str, full_qualified_name: str
1252
+ ) -> bool:
1253
+ put_data = json.dumps({"name": name, "fullyQualifiedName": full_qualified_name})
1254
+ url = self.ac_url + "/WindowsDomains/{id}".format(id=windows_domain_id)
1255
+ response = self.api_client.call_api(
1256
+ "PUT", url, data=put_data, headers={"Content-Type": "application/json"}
1257
+ )
1258
+ return response.status_code == NO_CONTENT
1259
+
1260
+ def delete_a_windows_domain(self, windows_domain_id: int) -> bool:
1261
+ url = self.ac_url + "/WindowsDomains/{id}".format(id=windows_domain_id)
1262
+ response = self.api_client.call_api("DELETE", url)
1263
+ return response.status_code == NO_CONTENT
1264
+
1265
+ def get_windows_domain_user_entries_by_search_criteria(
1266
+ self, windows_domain_id: int, contains_pattern: str = None
1267
+ ) -> List[User]:
1268
+ url = self.ac_url + "/WindowsDomains/{id}/UserEntries".format(id=windows_domain_id)
1269
+ if contains_pattern:
1270
+ url += "?containsPattern={}".format(contains_pattern)
1271
+ response = self.api_client.call_api("GET", url)
1272
+ if response.status_code == OK:
1273
+ return [User.from_dict(item) for item in response.json()]
1274
+ return []