crowdstrike-falconpy-dev 1.4.1__tar.gz → 1.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/AUTHORS.md +6 -2
  2. {crowdstrike-falconpy-dev-1.4.1/src/crowdstrike_falconpy_dev.egg-info → crowdstrike-falconpy-dev-1.4.3}/PKG-INFO +13 -3
  3. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/README.md +2 -1
  4. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3/src/crowdstrike_falconpy_dev.egg-info}/PKG-INFO +13 -3
  5. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/_falcon_interface.py +151 -84
  6. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/_uber_interface.py +4 -2
  7. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_alerts.py +2 -1
  8. crowdstrike-falconpy-dev-1.4.3/src/falconpydev/_endpoint/_cloud_snapshots.py +164 -0
  9. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_container_detections.py +36 -0
  10. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_container_images.py +4 -3
  11. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_cspm_registration.py +67 -6
  12. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_d4c_registration.py +14 -0
  13. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_discover.py +48 -0
  14. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_falcon_complete_dashboard.py +14 -0
  15. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_filevantage.py +9 -9
  16. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_foundry_logscale.py +94 -1
  17. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_intel.py +79 -0
  18. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_iocs.py +42 -44
  19. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_kubernetes_protection.py +13 -12
  20. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_message_center.py +2 -2
  21. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_real_time_response.py +30 -28
  22. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_real_time_response_admin.py +21 -20
  23. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_sensor_download.py +112 -0
  24. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_workflows.py +125 -7
  25. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_discover.py +48 -0
  26. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_real_time_response.py +17 -15
  27. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_real_time_response_admin.py +10 -9
  28. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/__init__.py +15 -5
  29. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_cloud_snapshots.py +17 -60
  30. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_cspm_registration.py +44 -0
  31. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_filevantage.py +7 -1
  32. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_workflows.py +20 -0
  33. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_service_class/_service_class.py +21 -1
  34. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_util/__init__.py +2 -2
  35. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_util/_auth.py +45 -0
  36. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_util/_functions.py +20 -8
  37. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_version.py +1 -1
  38. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/alerts.py +28 -8
  39. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/cloud_snapshots.py +132 -69
  40. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/container_detections.py +46 -0
  41. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/container_images.py +1 -1
  42. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/cspm_registration.py +185 -1
  43. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/d4c_registration.py +61 -1
  44. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/discover.py +71 -0
  45. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/falcon_complete_dashboard.py +87 -0
  46. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/filevantage.py +79 -44
  47. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/foundry_logscale.py +67 -1
  48. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/intel.py +94 -0
  49. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/kubernetes_protection.py +8 -4
  50. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/oauth2.py +4 -2
  51. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/sample_uploads.py +5 -0
  52. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/sensor_download.py +144 -0
  53. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/workflows.py +88 -25
  54. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_authentications.py +32 -28
  55. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_cloud_connect_aws.py +16 -0
  56. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_cloud_snapshots.py +4 -4
  57. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_container_detections.py +4 -3
  58. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_container_packages.py +1 -1
  59. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_container_vulnerabilities.py +1 -1
  60. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_cspm_registration.py +6 -1
  61. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_d4c_registration.py +2 -1
  62. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_discover.py +1 -0
  63. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_drift_indicators.py +1 -1
  64. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_falcon_complete_dashboard.py +1 -0
  65. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_foundry_logscale.py +2 -0
  66. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_intel.py +5 -1
  67. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_result_object.py +6 -5
  68. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_sample_uploads.py +2 -2
  69. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_sensor_download.py +43 -9
  70. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_uber.py +19 -18
  71. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_uber_api_complete.py +16 -16
  72. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_unidentified_containers.py +1 -1
  73. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_workflows.py +5 -2
  74. crowdstrike-falconpy-dev-1.4.3/tests/test_zero_trust_assessment.py +82 -0
  75. crowdstrike-falconpy-dev-1.4.1/src/falconpydev/_endpoint/_cloud_snapshots.py +0 -76
  76. crowdstrike-falconpy-dev-1.4.1/tests/test_zero_trust_assessment.py +0 -50
  77. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/LICENSE +0 -0
  78. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/dev_setup.py +0 -0
  79. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/setup.cfg +0 -0
  80. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/setup.py +0 -0
  81. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/crowdstrike_falconpy_dev.egg-info/SOURCES.txt +0 -0
  82. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/crowdstrike_falconpy_dev.egg-info/dependency_links.txt +0 -0
  83. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/crowdstrike_falconpy_dev.egg-info/requires.txt +0 -0
  84. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/crowdstrike_falconpy_dev.egg-info/top_level.txt +0 -0
  85. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/__init__.py +0 -0
  86. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/__init__.py +0 -0
  87. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request.py +0 -0
  88. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request_behavior.py +0 -0
  89. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request_connection.py +0 -0
  90. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request_meta.py +0 -0
  91. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request_payloads.py +0 -0
  92. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_api_request/_request_validator.py +0 -0
  93. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/__init__.py +0 -0
  94. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/_base_falcon_auth.py +0 -0
  95. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/_bearer_token.py +0 -0
  96. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_auth_object/_interface_config.py +0 -0
  97. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_constant/__init__.py +0 -0
  98. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/__init__.py +0 -0
  99. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_cloud_connect_aws.py +0 -0
  100. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_configuration_assessment.py +0 -0
  101. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_configuration_assessment_evaluation_logic.py +0 -0
  102. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_container_alerts.py +0 -0
  103. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_container_packages.py +0 -0
  104. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_container_vulnerabilities.py +0 -0
  105. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_custom_ioa.py +0 -0
  106. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_custom_storage.py +0 -0
  107. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_detects.py +0 -0
  108. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_device_control_policies.py +0 -0
  109. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_drift_indicators.py +0 -0
  110. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_event_streams.py +0 -0
  111. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_falcon_container.py +0 -0
  112. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_falconx_sandbox.py +0 -0
  113. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_fdr.py +0 -0
  114. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_firewall_management.py +0 -0
  115. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_firewall_policies.py +0 -0
  116. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_host_group.py +0 -0
  117. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_hosts.py +0 -0
  118. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_identity_protection.py +0 -0
  119. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_image_assessment_policies.py +0 -0
  120. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_incidents.py +0 -0
  121. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_installation_tokens.py +0 -0
  122. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_ioa_exclusions.py +0 -0
  123. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_ioc.py +0 -0
  124. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_malquery.py +0 -0
  125. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_ml_exclusions.py +0 -0
  126. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_mobile_enrollment.py +0 -0
  127. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_mssp.py +0 -0
  128. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_oauth2.py +0 -0
  129. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_ods.py +0 -0
  130. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_overwatch_dashboard.py +0 -0
  131. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_prevention_policies.py +0 -0
  132. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_quarantine.py +0 -0
  133. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_quick_scan.py +0 -0
  134. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_real_time_response_audit.py +0 -0
  135. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_recon.py +0 -0
  136. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_report_executions.py +0 -0
  137. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_response_policies.py +0 -0
  138. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_sample_uploads.py +0 -0
  139. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_scheduled_reports.py +0 -0
  140. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_sensor_update_policies.py +0 -0
  141. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_sensor_visibility_exclusions.py +0 -0
  142. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_spotlight_evaluation_logic.py +0 -0
  143. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_spotlight_vulnerabilities.py +0 -0
  144. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_tailored_intelligence.py +0 -0
  145. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_unidentified_containers.py +0 -0
  146. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_user_management.py +0 -0
  147. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/_zero_trust_assessment.py +0 -0
  148. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/__init__.py +0 -0
  149. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_custom_ioa.py +0 -0
  150. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_d4c_registration.py +0 -0
  151. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_fdr.py +0 -0
  152. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_firewall_management.py +0 -0
  153. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_hosts.py +0 -0
  154. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_identity_protection.py +0 -0
  155. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_installation_tokens.py +0 -0
  156. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_ioc.py +0 -0
  157. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_iocs.py +0 -0
  158. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_mapping.py +0 -0
  159. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_ods.py +0 -0
  160. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_report_executions.py +0 -0
  161. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_scheduled_reports.py +0 -0
  162. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_endpoint/deprecated/_zero_trust_assessment.py +0 -0
  163. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_enum/__init__.py +0 -0
  164. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_enum/_base_url.py +0 -0
  165. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_enum/_container_base_url.py +0 -0
  166. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_enum/_token_fail_reason.py +0 -0
  167. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_error/__init__.py +0 -0
  168. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_error/_exceptions.py +0 -0
  169. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_error/_warnings.py +0 -0
  170. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_log/__init__.py +0 -0
  171. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_log/_facility.py +0 -0
  172. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_alerts.py +0 -0
  173. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_cloud_connect_aws.py +0 -0
  174. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_container.py +0 -0
  175. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_d4c_registration.py +0 -0
  176. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_detects.py +0 -0
  177. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_device_control_policy.py +0 -0
  178. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_falconx.py +0 -0
  179. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_firewall.py +0 -0
  180. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_foundry.py +0 -0
  181. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_generic.py +0 -0
  182. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_host_group.py +0 -0
  183. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_incidents.py +0 -0
  184. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_ioa.py +0 -0
  185. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_ioc.py +0 -0
  186. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_malquery.py +0 -0
  187. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_message_center.py +0 -0
  188. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_mssp.py +0 -0
  189. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_ods.py +0 -0
  190. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_prevention_policy.py +0 -0
  191. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_real_time_response.py +0 -0
  192. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_recon.py +0 -0
  193. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_reports.py +0 -0
  194. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_response_policy.py +0 -0
  195. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_sample_uploads.py +0 -0
  196. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_payload/_sensor_update_policy.py +0 -0
  197. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/__base_resource.py +0 -0
  198. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/__init__.py +0 -0
  199. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_base_dictionary.py +0 -0
  200. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_errors.py +0 -0
  201. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_expanded_result.py +0 -0
  202. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_headers.py +0 -0
  203. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_meta.py +0 -0
  204. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_resources.py +0 -0
  205. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_response_component.py +0 -0
  206. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_result/_result.py +0 -0
  207. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_service_class/__init__.py +0 -0
  208. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_service_class/_base_service_class.py +0 -0
  209. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_util/_service.py +0 -0
  210. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/_util/_uber.py +0 -0
  211. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/api_complete/__init__.py +0 -0
  212. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/api_complete/_advanced.py +0 -0
  213. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/api_complete/_legacy.py +0 -0
  214. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/cloud_connect_aws.py +0 -0
  215. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/configuration_assessment.py +0 -0
  216. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/configuration_assessment_evaluation_logic.py +0 -0
  217. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/container_alerts.py +0 -0
  218. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/container_packages.py +0 -0
  219. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/container_vulnerabilities.py +0 -0
  220. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/custom_ioa.py +0 -0
  221. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/custom_storage.py +0 -0
  222. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/debug.py +0 -0
  223. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/detects.py +0 -0
  224. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/device_control_policies.py +0 -0
  225. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/drift_indicators.py +0 -0
  226. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/event_streams.py +0 -0
  227. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/falcon_container.py +0 -0
  228. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/falconx_sandbox.py +0 -0
  229. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/fdr.py +0 -0
  230. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/firewall_management.py +0 -0
  231. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/firewall_policies.py +0 -0
  232. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/host_group.py +0 -0
  233. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/hosts.py +0 -0
  234. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/identity_protection.py +0 -0
  235. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/image_assessment_policies.py +0 -0
  236. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/incidents.py +0 -0
  237. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/installation_tokens.py +0 -0
  238. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/ioa_exclusions.py +0 -0
  239. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/ioc.py +0 -0
  240. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/iocs.py +0 -0
  241. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/malquery.py +0 -0
  242. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/message_center.py +0 -0
  243. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/ml_exclusions.py +0 -0
  244. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/mobile_enrollment.py +0 -0
  245. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/mssp.py +0 -0
  246. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/ods.py +0 -0
  247. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/overwatch_dashboard.py +0 -0
  248. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/prevention_policy.py +0 -0
  249. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/quarantine.py +0 -0
  250. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/quick_scan.py +0 -0
  251. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/real_time_response.py +0 -0
  252. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/real_time_response_admin.py +0 -0
  253. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/real_time_response_audit.py +0 -0
  254. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/recon.py +0 -0
  255. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/report_executions.py +0 -0
  256. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/response_policies.py +0 -0
  257. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/scheduled_reports.py +0 -0
  258. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/sensor_update_policy.py +0 -0
  259. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/sensor_visibility_exclusions.py +0 -0
  260. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/spotlight_evaluation_logic.py +0 -0
  261. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/spotlight_vulnerabilities.py +0 -0
  262. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/tailored_intelligence.py +0 -0
  263. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/unidentified_containers.py +0 -0
  264. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/user_management.py +0 -0
  265. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/src/falconpydev/zero_trust_assessment.py +0 -0
  266. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_alerts.py +0 -0
  267. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_api_request.py +0 -0
  268. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_authorization.py +0 -0
  269. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_configuration_assessment.py +0 -0
  270. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_configuration_assessment_evaluation_logic.py +0 -0
  271. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_container_alerts.py +0 -0
  272. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_container_images.py +0 -0
  273. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_custom_ioa.py +0 -0
  274. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_custom_storage.py +0 -0
  275. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_detects.py +0 -0
  276. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_device_control_policies.py +0 -0
  277. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_event_streams.py +0 -0
  278. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_falcon_container.py +0 -0
  279. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_falconx_sandbox.py +0 -0
  280. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_fdr.py +0 -0
  281. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_filevantage.py +0 -0
  282. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_firewall_management.py +0 -0
  283. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_firewall_policies.py +0 -0
  284. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_host_group.py +0 -0
  285. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_hosts.py +0 -0
  286. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_identity_protection.py +0 -0
  287. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_image_assessment_policies.py +0 -0
  288. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_incidents.py +0 -0
  289. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_installation_tokens.py +0 -0
  290. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_ioa_exclusions.py +0 -0
  291. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_ioc.py +0 -0
  292. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_iocs.py +0 -0
  293. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_kubernetes_protection.py +0 -0
  294. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_malquery.py +0 -0
  295. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_message_center.py +0 -0
  296. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_ml_exclusions.py +0 -0
  297. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_mobile_enrollment.py +0 -0
  298. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_mssp.py +0 -0
  299. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_ods.py +0 -0
  300. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_overwatch_dashboard.py +0 -0
  301. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_prevention_policy.py +0 -0
  302. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_quarantine.py +0 -0
  303. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_quick_scan.py +0 -0
  304. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_real_time_response.py +0 -0
  305. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_real_time_response_admin.py +0 -0
  306. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_real_time_response_audit.py +0 -0
  307. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_recon.py +0 -0
  308. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_report_executions.py +0 -0
  309. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_response_policies.py +0 -0
  310. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_scheduled_reports.py +0 -0
  311. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_sensor_update_policy.py +0 -0
  312. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_sensor_visibility_exclusions.py +0 -0
  313. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_service_class.py +0 -0
  314. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_spotlight_evaluation_logic.py +0 -0
  315. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_spotlight_vulnerabilities.py +0 -0
  316. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_tailored_intelligence.py +0 -0
  317. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_timeout.py +0 -0
  318. {crowdstrike-falconpy-dev-1.4.1 → crowdstrike-falconpy-dev-1.4.3}/tests/test_user_management.py +0 -0
@@ -28,7 +28,6 @@ These coders deserve accolades and laurels as well as cool titles and cartoons.
28
28
 
29
29
  | Name | Role |
30
30
  | :--- | :--- |
31
- | Šimon L., `@isimluk` | [Sanity Checker](https://xkcd.com/1926/) |
32
31
  | Josh Lang, `@jlangdev` | [Lint Purveyor](https://xkcd.com/1833/) |
33
32
  | Christopher Hammond, `@ChristopherHammond13` | [Technical Debt Collector](https://xkcd.com/2138/) |
34
33
  | Gabe Alford, `@redhatrises` | [Git Whisperer](https://xkcd.com/1597/) |
@@ -37,6 +36,9 @@ These coders deserve accolades and laurels as well as cool titles and cartoons.
37
36
  | Shane Shellenbarger, `@soggysec` | [Calamity Validator](https://xkcd.com/1700/) |
38
37
  | Steve Klassen, `@mrxinu` | [Dilemma Responder](https://xkcd.com/85/) |
39
38
 
39
+ #### Honorable mentions
40
+ + Šimon L., `@isimluk` ([Sanity Checker](https://xkcd.com/1926/))
41
+
40
42
  ## Contributors
41
43
  The following members of the community have made requests, suggestions, code contributions or provided feedback and reported bugs.
42
44
  This has been a critical element in the development of the FalconPy project.
@@ -90,6 +92,8 @@ This has been a critical element in the development of the FalconPy project.
90
92
  + Phil Massyn, `@massyn`
91
93
  + Russell Snyder, `@rusnyder`
92
94
  + `@PeroSoy`
95
+ + Shubham, `@i-shubham01`
96
+ + Don "Swanson" I., `@Don-Swanson-Adobe`
93
97
 
94
98
 
95
99
  ## Sponsors
@@ -98,11 +102,11 @@ Without the support of these executives, the FalconPy project would not have hap
98
102
  | Name | Role |
99
103
  | :-- | :-- |
100
104
  | Chris Kachigian, `@ckachigian` | Herder of Cats |
101
- | Rekha Das | Gatekeeper |
102
105
  | Robbie Coleman, `@erraggy` | Keymaster |
103
106
  | Mike Cryer | Colonel-in-Chief |
104
107
 
105
108
  #### Honorable mentions
109
+ + Rekha Das
106
110
  + Jaime Franklin, `@franklinjff`
107
111
  + Shawn Wells, `@shawndwells`
108
112
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: crowdstrike-falconpy-dev
3
- Version: 1.4.1
3
+ Version: 1.4.3
4
4
  Summary: The CrowdStrike Falcon SDK for Python 3
5
5
  Home-page: https://github.com/CrowdStrike/falconpy
6
6
  Author: CrowdStrike
@@ -36,9 +36,18 @@ Classifier: Topic :: System :: Systems Administration
36
36
  Classifier: Topic :: Utilities
37
37
  Requires-Python: >=3.6
38
38
  Description-Content-Type: text/markdown
39
- Provides-Extra: dev
40
39
  License-File: LICENSE
41
40
  License-File: AUTHORS.md
41
+ Requires-Dist: requests
42
+ Requires-Dist: urllib3
43
+ Provides-Extra: dev
44
+ Requires-Dist: flake8; extra == "dev"
45
+ Requires-Dist: coverage; extra == "dev"
46
+ Requires-Dist: pydocstyle; extra == "dev"
47
+ Requires-Dist: pylint; extra == "dev"
48
+ Requires-Dist: pytest-cov; extra == "dev"
49
+ Requires-Dist: pytest; extra == "dev"
50
+ Requires-Dist: bandit; extra == "dev"
42
51
 
43
52
  ![CrowdStrike FalconPy](https://raw.githubusercontent.com/CrowdStrike/falconpy/main/docs/asset/cs-logo.png)
44
53
 
@@ -56,7 +65,7 @@ License-File: AUTHORS.md
56
65
  [![Release date](https://img.shields.io/github/release-date/CrowdStrike/falconpy)](https://github.com/CrowdStrike/falconpy/releases)
57
66
  [![Repo status](https://img.shields.io/osslifecycle/crowdstrike/falconpy?label=repo%20status)](https://github.com/CrowdStrike/falconpy/graphs/code-frequency)
58
67
  [![Commit activity](https://img.shields.io/github/commits-since/CrowdStrike/falconpy/latest)](https://github.com/CrowdStrike/falconpy/commits/main)
59
- ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy)
68
+ ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy?style=flat)
60
69
 
61
70
  The FalconPy SDK contains a collection of Python classes that abstract CrowdStrike Falcon OAuth2 API interaction, removing duplicative code and allowing developers to focus on just the logic of their solution requirements.
62
71
 
@@ -130,6 +139,7 @@ For each CrowdStrike Falcon API service collection, a matching Service Class is
130
139
 
131
140
  - Closely follows Python and OpenAPI best practice for code style and syntax. PEP-8 compliant.
132
141
  - Completely abstracts token management, automatically refreshing your token when it expires.
142
+ - Interact with newly released API operations not yet available in the library via the `override` method.
133
143
  - Provides simple programmatic patterns for interacting with CrowdStrike Falcon APIs.
134
144
  - Supports [cloud region autodiscovery](https://www.falconpy.io/Usage/Environment-Configuration.html#cloud-region-autodiscovery) for the CrowdStrike `US-1`, `US-2` and `EU-1` regions.
135
145
  - Supports dynamic [configuration](https://www.falconpy.io/Usage/Environment-Configuration.html) based upon the needs of your environment.
@@ -9,7 +9,7 @@
9
9
  [![Release date](https://img.shields.io/github/release-date/CrowdStrike/falconpy)](https://github.com/CrowdStrike/falconpy/releases)
10
10
  [![Repo status](https://img.shields.io/osslifecycle/crowdstrike/falconpy?label=repo%20status)](https://github.com/CrowdStrike/falconpy/graphs/code-frequency)
11
11
  [![Commit activity](https://img.shields.io/github/commits-since/CrowdStrike/falconpy/latest)](https://github.com/CrowdStrike/falconpy/commits/main)
12
- ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy)
12
+ ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy?style=flat)
13
13
 
14
14
  The FalconPy SDK contains a collection of Python classes that abstract CrowdStrike Falcon OAuth2 API interaction, removing duplicative code and allowing developers to focus on just the logic of their solution requirements.
15
15
 
@@ -83,6 +83,7 @@ For each CrowdStrike Falcon API service collection, a matching Service Class is
83
83
 
84
84
  - Closely follows Python and OpenAPI best practice for code style and syntax. PEP-8 compliant.
85
85
  - Completely abstracts token management, automatically refreshing your token when it expires.
86
+ - Interact with newly released API operations not yet available in the library via the `override` method.
86
87
  - Provides simple programmatic patterns for interacting with CrowdStrike Falcon APIs.
87
88
  - Supports [cloud region autodiscovery](https://www.falconpy.io/Usage/Environment-Configuration.html#cloud-region-autodiscovery) for the CrowdStrike `US-1`, `US-2` and `EU-1` regions.
88
89
  - Supports dynamic [configuration](https://www.falconpy.io/Usage/Environment-Configuration.html) based upon the needs of your environment.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: crowdstrike-falconpy-dev
3
- Version: 1.4.1
3
+ Version: 1.4.3
4
4
  Summary: The CrowdStrike Falcon SDK for Python 3
5
5
  Home-page: https://github.com/CrowdStrike/falconpy
6
6
  Author: CrowdStrike
@@ -36,9 +36,18 @@ Classifier: Topic :: System :: Systems Administration
36
36
  Classifier: Topic :: Utilities
37
37
  Requires-Python: >=3.6
38
38
  Description-Content-Type: text/markdown
39
- Provides-Extra: dev
40
39
  License-File: LICENSE
41
40
  License-File: AUTHORS.md
41
+ Requires-Dist: requests
42
+ Requires-Dist: urllib3
43
+ Provides-Extra: dev
44
+ Requires-Dist: flake8; extra == "dev"
45
+ Requires-Dist: coverage; extra == "dev"
46
+ Requires-Dist: pydocstyle; extra == "dev"
47
+ Requires-Dist: pylint; extra == "dev"
48
+ Requires-Dist: pytest-cov; extra == "dev"
49
+ Requires-Dist: pytest; extra == "dev"
50
+ Requires-Dist: bandit; extra == "dev"
42
51
 
43
52
  ![CrowdStrike FalconPy](https://raw.githubusercontent.com/CrowdStrike/falconpy/main/docs/asset/cs-logo.png)
44
53
 
@@ -56,7 +65,7 @@ License-File: AUTHORS.md
56
65
  [![Release date](https://img.shields.io/github/release-date/CrowdStrike/falconpy)](https://github.com/CrowdStrike/falconpy/releases)
57
66
  [![Repo status](https://img.shields.io/osslifecycle/crowdstrike/falconpy?label=repo%20status)](https://github.com/CrowdStrike/falconpy/graphs/code-frequency)
58
67
  [![Commit activity](https://img.shields.io/github/commits-since/CrowdStrike/falconpy/latest)](https://github.com/CrowdStrike/falconpy/commits/main)
59
- ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy)
68
+ ![GitHub forks](https://img.shields.io/github/forks/crowdstrike/falconpy?style=flat)
60
69
 
61
70
  The FalconPy SDK contains a collection of Python classes that abstract CrowdStrike Falcon OAuth2 API interaction, removing duplicative code and allowing developers to focus on just the logic of their solution requirements.
62
71
 
@@ -130,6 +139,7 @@ For each CrowdStrike Falcon API service collection, a matching Service Class is
130
139
 
131
140
  - Closely follows Python and OpenAPI best practice for code style and syntax. PEP-8 compliant.
132
141
  - Completely abstracts token management, automatically refreshing your token when it expires.
142
+ - Interact with newly released API operations not yet available in the library via the `override` method.
133
143
  - Provides simple programmatic patterns for interacting with CrowdStrike Falcon APIs.
134
144
  - Supports [cloud region autodiscovery](https://www.falconpy.io/Usage/Environment-Configuration.html#cloud-region-autodiscovery) for the CrowdStrike `US-1`, `US-2` and `EU-1` regions.
135
145
  - Supports dynamic [configuration](https://www.falconpy.io/Usage/Environment-Configuration.html) based upon the needs of your environment.
@@ -41,11 +41,7 @@ For more information, please refer to <https://unlicense.org>
41
41
  import time
42
42
  import os
43
43
  import warnings
44
- from json import loads
45
- try:
46
- from simplejson import JSONDecodeError
47
- except (ImportError, ModuleNotFoundError): # Support import as a module
48
- from json.decoder import JSONDecodeError
44
+ from contextvars import copy_context
49
45
  from logging import Logger, getLogger
50
46
  from typing import Dict, Optional, Union
51
47
  from ._base_falcon_auth import BaseFalconAuth
@@ -56,21 +52,23 @@ from ._interface_config import InterfaceConfiguration
56
52
  from .._enum import TokenFailReason
57
53
  from .._util import (
58
54
  autodiscover_region,
55
+ confirm_base_url,
59
56
  perform_request,
60
57
  log_class_startup,
61
58
  login_payloads,
62
- logout_payloads
59
+ logout_payloads,
60
+ review_provided_credentials
63
61
  )
64
- from .._error import InvalidCredentials, NoAuthenticationMechanism, InvalidCredentialFormat
62
+ from .._error import InvalidCredentials, NoAuthenticationMechanism
65
63
 
66
64
 
67
- # pylint: disable=R0902
65
+ # pylint: disable=R0902,R0904
68
66
  class FalconInterface(BaseFalconAuth):
69
67
  """Standard Falcon API interface used by Service Classes."""
70
68
 
71
- # ____ ____ _ _ ____ ___ ____ _ _ ____ ___ ____ ____
72
- # | | | |\ | [__ | |__/ | | | | | | |__/
73
- # |___ |__| | \| ___] | | \ |__| |___ | |__| | \
69
+ # _______ _____ __ _ _______ _______ ______ _ _ _______ _______ _____ ______
70
+ # | | | | \ | |______ | |_____/ | | | | | | |_____/
71
+ # |_____ |_____| | \_| ______| | | \_ |_____| |_____ | |_____| | \_
74
72
  #
75
73
  # The default constructor for all authentication objects. Ingests provided credentials
76
74
  # and sets the necessary class attributes based upon the authentication detail received.
@@ -90,7 +88,8 @@ class FalconInterface(BaseFalconAuth):
90
88
  debug: Optional[bool] = False,
91
89
  debug_record_count: Optional[int] = None,
92
90
  sanitize_log: Optional[bool] = None,
93
- pythonic: Optional[bool] = False
91
+ pythonic: Optional[bool] = False,
92
+ environment: Optional[Dict[str, str]] = None
94
93
  ) -> "FalconInterface":
95
94
  """Construct an instance of the FalconInterface class."""
96
95
  # Set the pythonic behavior mode.
@@ -98,12 +97,6 @@ class FalconInterface(BaseFalconAuth):
98
97
  if isinstance(pythonic, bool):
99
98
  self._pythonic = pythonic
100
99
 
101
- # The default credential dictionary, where the client_id and client_secret are stored.
102
- self._creds = {}
103
-
104
- # Set up an empty Bearer Token container
105
- self._token: BearerToken = BearerToken()
106
-
107
100
  # Setup our configuration object using the provided keywords.
108
101
  self._config: InterfaceConfiguration = InterfaceConfiguration(base_url=base_url,
109
102
  proxy=proxy,
@@ -114,50 +107,87 @@ class FalconInterface(BaseFalconAuth):
114
107
  # ____ _ _ ___ _ _ ____ _ _ ___ _ ____ ____ ___ _ ____ _ _ |
115
108
  # |__| | | | |__| |___ |\ | | | | |__| | | | | |\ | / \
116
109
  # | | |__| | | | |___ | \| | | |___ | | | | |__| | \|
117
- # Direct Authentication
118
- if client_id and client_secret and not creds:
119
- creds = {
120
- "client_id": client_id,
121
- "client_secret": client_secret
122
- }
123
- # You must pass member_cid the same way you pass client_id / secret.
124
- # If you use a creds dictionary, pass the member_cid there instead.
125
- if member_cid:
126
- creds["member_cid"] = member_cid
127
- elif not creds:
128
- creds = {}
129
- # Credential Authentication (also powers Direct Authentication).
130
- if isinstance(creds, str):
131
- try:
132
- # Try and clean up any attempts to provide the dictionary as a string
133
- self._creds: Dict[str, str] = loads(creds.replace("'", "\""))
134
- except (TypeError, JSONDecodeError) as bad_cred_format:
135
- raise InvalidCredentialFormat from bad_cred_format
136
- elif isinstance(creds, dict):
137
- self._creds: Dict[str, str] = creds
138
- else:
139
- raise InvalidCredentialFormat
140
-
141
- # Legacy (Token) Authentication (fallback)
142
- if access_token:
143
- # Store this non-refreshable token, assuming it was just generated.
144
- self._token: BearerToken = BearerToken(access_token, 1799, 201)
145
-
146
- # Set the token renewal window, ignored when using Legacy Authentication.
147
- self.renew_window: int = max(min(renew_window, MAX_TOKEN_RENEW_WINDOW),
148
- MIN_TOKEN_RENEW_WINDOW
149
- )
110
+ #
111
+ # Assume no credentials or tokens are provided.
112
+ # A NoAuthenticationMechanism warning will be generated if a
113
+ # valid authentication mechanism is not specified or detected.
114
+ #
115
+ # Then try to authenticate in the following order:
116
+ # 1. Direct
117
+ # 2. Credential
118
+ # 3. Token (Legacy)
119
+ # 4. Context (Foundry)
120
+ # 5. Environment
121
+ #
122
+ # Remaining authentication checks are skipped once a successful mechanism has been determined.
123
+ #
124
+ # Object Authentication is handled within the ServiceClass object and leverages the existing
125
+ # authentication used for the underlying authentication object attribute.
126
+
127
+ # Set up an empty Bearer Token container.
128
+ self._token: BearerToken = BearerToken()
150
129
 
151
- # Environment Authentication
152
- # When credentials are not provided, attempt to retrieve them from the environment.
130
+ # ___ _ ____ ____ ____ ___ ____ _ _ ___ ____ ____ ____ ___ ____ _ _ ___ _ ____ _
131
+ # | \ | |__/ |___ | | |__| |\ | | \ | |__/ |___ | \ |___ |\ | | | |__| |
132
+ # |__/ | | \ |___ |___ | | | | \| |__/ |___ | \ |___ |__/ |___ | \| | | | | |___
133
+ #
134
+ # Direct Authentication checks provided values and return a creds dictionary based upon the contents.
135
+ # Authorization is derived from the bearer token generated using the provided credentials.
136
+ self._creds, self._auth_style = review_provided_credentials(client_id, client_secret, creds, member_cid)
137
+
138
+ # ___ ____ _ _ ____ _ _
139
+ # | | | |_/ |___ |\ |
140
+ # | |__| | \_ |___ | \|
141
+ #
142
+ # Token (Legacy) Authentication
143
+ # Authorization is derived from the provided bearer token.
144
+ # A login event is unnecessary when using this authentication mechanism.
145
+ if not self.cred_format_valid:
146
+ if access_token:
147
+ # Store this non-refreshable token, assuming it was just generated.
148
+ self._token: BearerToken = BearerToken(access_token, 1799, 201)
149
+ self._auth_style = "TOKEN"
150
+
151
+ # ____ ____ _ _ ___ ____ _ _ ___
152
+ # | | | |\ | | |___ \/ |
153
+ # |___ |__| | \| | |___ _/\_ |
154
+ #
155
+ # Context Authentication searches the current running context for
156
+ # an object containing a bearer token as an attribute or property.
157
+ # Authorization is derived from the discovered bearer token.
158
+ # A login event is unnecessary when using this authentication mechanism.
159
+ if not self.cred_format_valid and not self.token_value:
160
+ for cvar in copy_context().values():
161
+ try:
162
+ # Any object is acceptable as long as it has an attribute or property named "access_token".
163
+ self._token: BearerToken = BearerToken(cvar.access_token, 1799, 201)
164
+ # Attempt to retrieve the cloud region from the same object.
165
+ # Fall back to our previously set default on failure.
166
+ try:
167
+ if cvar.cs_cloud:
168
+ self._config.base_url = confirm_base_url(cvar.cs_cloud)
169
+ except AttributeError:
170
+ pass
171
+ self._auth_style = "CONTEXT"
172
+ break
173
+ except AttributeError:
174
+ pass
175
+
176
+ # ____ _ _ _ _ _ ____ ____ _ _ _ _ ____ _ _ ___
177
+ # |___ |\ | | | | |__/ | | |\ | |\/| |___ |\ | |
178
+ # |___ | \| \/ | | \ |__| | \| | | |___ | \| |
179
+ #
180
+ # Environment Authentication searches the current environment for variables containing credentials.
181
+ # Authorization is derived from the bearer token generated using the discovered credentials.
182
+ # Developers may customize which variable names are searched by leveraging the environment keyword (dictionary).
183
+ self._environment = environment if environment else {}
153
184
  if not self.cred_format_valid and not self.token_value:
154
185
  # Both variables must be present within the running environment.
155
- if os.getenv("FALCON_CLIENT_ID") and os.getenv("FALCON_CLIENT_SECRET"):
156
- api_id = os.getenv("FALCON_CLIENT_ID") if "client_id" not in self.creds else self.creds["client_id"]
157
- if "client_secret" not in self.creds:
158
- api_sec = os.getenv("FALCON_CLIENT_SECRET")
159
- else:
160
- api_sec = self.creds["client_secret"]
186
+ if os.getenv(f"{self.env_prefix}{self.env_key}") and os.getenv(f"{self.env_prefix}{self.env_secret}"):
187
+ api_id = os.getenv(f"{self.env_prefix}{self.env_key}") \
188
+ if "client_id" not in self.creds else self.creds["client_id"]
189
+ api_sec = os.getenv(f"{self.env_prefix}{self.env_secret}") \
190
+ if "client_secret" not in self.creds else self.creds["client_secret"]
161
191
  # Environment Authentication will not override values that preexist in the creds dictionary.
162
192
  self._creds = {
163
193
  "client_id": api_id,
@@ -166,7 +196,17 @@ class FalconInterface(BaseFalconAuth):
166
196
  # Provide member_cid for MSSP environment authentication scenarios. Issue #1105.
167
197
  if member_cid:
168
198
  self._creds["member_cid"] = member_cid
199
+ self._auth_style = "ENVIRONMENT"
200
+
201
+ # Set the token renewal window, ignored when using Legacy or Context Authentication.
202
+ self.renew_window: int = max(min(renew_window, MAX_TOKEN_RENEW_WINDOW),
203
+ MIN_TOKEN_RENEW_WINDOW
204
+ )
169
205
 
206
+ # _ ____ ____ ____ _ _ _ ____
207
+ # | | | | __ | __ | |\ | | __
208
+ # |___ |__| |__] |__] | | \| |__]
209
+ #
170
210
  # Log the creation of this object if debugging is enabled.
171
211
  # Starting with v1.3.0 minimal Python native logging is available. In order to reduce
172
212
  # potential impacts to developer configurations, this facility is extremely limited
@@ -188,27 +228,34 @@ class FalconInterface(BaseFalconAuth):
188
228
  # Set up an empty log facility
189
229
  self._log: LogFacility = LogFacility()
190
230
 
231
+ # _ _ ____ _ _ ___ ____ ___ ____
232
+ # | | |__| | | | \ |__| | |___
233
+ # \/ | | |___ | |__/ | | | |___
234
+ #
235
+ # Validation occurs after the logging object is created.
191
236
  try:
237
+ # Check to see if we have a valid authentication mechanism configured.
192
238
  if not self.cred_format_valid and not self.token_value:
193
239
  raise NoAuthenticationMechanism
194
240
  except NoAuthenticationMechanism as no_auth_mechanism:
241
+ # Warn appropriately if we do not.
195
242
  if pythonic:
196
243
  warnings.warn(no_auth_mechanism.message, NoAuthenticationMechanism, stacklevel=2)
197
244
  if self.log:
198
245
  self.log.warning(no_auth_mechanism.message)
199
246
 
200
- # _ _ ____ ___ _ _ ____ ___ ____
201
- # |\/| |___ | |__| | | | \ [__
202
- # | | |___ | | | |__| |__/ ___]
247
+ # _______ _______ _______ _ _ _____ ______ _______
248
+ # | | | |______ | |_____| | | | \ |______
249
+ # | | | |______ | | | |_____| |_____/ ______|
203
250
  #
204
251
  # The generic login and logout handlers are provided here and leverage private methods
205
252
  # to perform the operation. These private methods can be overridden to provide individual
206
253
  # login and logout functionality to different inheriting class types.
207
- def login(self) -> dict or bool:
254
+ def login(self) -> Union[dict, bool]:
208
255
  """Login to the Falcon API by requesting a new token."""
209
256
  return self._login_handler()
210
257
 
211
- def logout(self) -> dict or bool:
258
+ def logout(self) -> Union[dict, bool]:
212
259
  """Log out of the Falcon API by revoking the current token."""
213
260
  return self._logout_handler()
214
261
 
@@ -299,9 +346,9 @@ class FalconInterface(BaseFalconAuth):
299
346
 
300
347
  return returned
301
348
 
302
- # ___ ____ ____ ___ ____ ____ ___ _ ____ ____
303
- # |__] |__/ | | |__] |___ |__/ | | |___ [__
304
- # | | \ |__| | |___ | \ | | |___ ___]
349
+ # _____ ______ _____ _____ _______ ______ _______ _____ _______ _______
350
+ # |_____] |_____/ | | |_____] |______ |_____/ | | |______ |______
351
+ # | | \_ |_____| | |______ | \_ | __|__ |______ ______|
305
352
  #
306
353
  # These properties are present in all FalconInterface derivatives.
307
354
  @property
@@ -327,47 +374,47 @@ class FalconInterface(BaseFalconAuth):
327
374
  @property
328
375
  def base_url(self) -> str:
329
376
  """Return the base URL for this interface from the configuration object."""
330
- return self._config.base_url
377
+ return self.config.base_url
331
378
 
332
379
  @base_url.setter
333
380
  def base_url(self, value):
334
- self._config.base_url = value
381
+ self.config.base_url = value
335
382
 
336
383
  @property
337
384
  def ssl_verify(self) -> bool:
338
385
  """Return the SSL verification setting from the configuration object."""
339
- return self._config.ssl_verify
386
+ return self.config.ssl_verify
340
387
 
341
388
  @ssl_verify.setter
342
389
  def ssl_verify(self, value: bool):
343
- self._config.ssl_verify = value
390
+ self.config.ssl_verify = value
344
391
 
345
392
  @property
346
393
  def proxy(self) -> Dict[str, str]:
347
394
  """Return the current proxy setting."""
348
- return self._config.proxy
395
+ return self.config.proxy
349
396
 
350
397
  @proxy.setter
351
398
  def proxy(self, value: Dict[str, str]):
352
- self._config.proxy = value
399
+ self.config.proxy = value
353
400
 
354
401
  @property
355
402
  def user_agent(self) -> str:
356
403
  """Return the current user agent setting."""
357
- return self._config.user_agent
404
+ return self.config.user_agent
358
405
 
359
406
  @user_agent.setter
360
407
  def user_agent(self, value: str):
361
- self._config.user_agent = value
408
+ self.config.user_agent = value
362
409
 
363
410
  @property
364
411
  def timeout(self) -> Union[int, tuple]:
365
412
  """Return the current timeout setting."""
366
- return self._config.timeout
413
+ return self.config.timeout
367
414
 
368
415
  @timeout.setter
369
416
  def timeout(self, value: Union[int, tuple]):
370
- self._config.timeout = value
417
+ self.config.timeout = value
371
418
 
372
419
  @property
373
420
  def debug_record_count(self) -> int:
@@ -452,6 +499,16 @@ class FalconInterface(BaseFalconAuth):
452
499
  def token_value(self, value: str):
453
500
  self.bearer_token.value = value
454
501
 
502
+ @property
503
+ def pythonic(self) -> bool:
504
+ """Return a boolean if we are in a pythonic mode."""
505
+ return self._pythonic
506
+
507
+ @pythonic.setter
508
+ def pythonic(self, value: bool):
509
+ """Enable or disable pythonic mode."""
510
+ self._pythonic = value
511
+
455
512
  # All properties defined here are by design IMMUTABLE.
456
513
  @property
457
514
  def refreshable(self) -> bool:
@@ -503,11 +560,21 @@ class FalconInterface(BaseFalconAuth):
503
560
  return bool(self.log)
504
561
 
505
562
  @property
506
- def pythonic(self) -> bool:
507
- """Return a boolean if we are in a pythonic mode."""
508
- return self._pythonic
563
+ def env_prefix(self) -> str:
564
+ """Return the environment prefix."""
565
+ return self._environment.get("prefix", "FALCON_")
509
566
 
510
- @pythonic.setter
511
- def pythonic(self, value: bool):
512
- """Enable or disable pythonic mode."""
513
- self._pythonic = value
567
+ @property
568
+ def env_key(self) -> str:
569
+ """Return the environment API key name."""
570
+ return self._environment.get("id_name", "CLIENT_ID")
571
+
572
+ @property
573
+ def env_secret(self) -> str:
574
+ """Return the environment API key secret."""
575
+ return self._environment.get("secret_name", "CLIENT_SECRET")
576
+
577
+ @property
578
+ def auth_style(self) -> str:
579
+ """Return the authentication mechanism used to instantiate this object."""
580
+ return self._auth_style
@@ -77,7 +77,8 @@ class UberInterface(FalconInterface):
77
77
  debug: Optional[bool] = False,
78
78
  debug_record_count: Optional[int] = MAX_DEBUG_RECORDS,
79
79
  sanitize_log: Optional[bool] = None,
80
- pythonic: Optional[bool] = None
80
+ pythonic: Optional[bool] = None,
81
+ environment: Optional[Dict[str, str]] = None
81
82
  ):
82
83
  """Construct an instance of the UberInterface class.
83
84
 
@@ -126,7 +127,8 @@ class UberInterface(FalconInterface):
126
127
  debug=debug,
127
128
  debug_record_count=debug_record_count,
128
129
  sanitize_log=sanitize_log,
129
- pythonic=pythonic
130
+ pythonic=pythonic,
131
+ environment=environment
130
132
  )
131
133
 
132
134
  # Complete list of available API operations.
@@ -169,7 +169,8 @@ _alerts_endpoints = [
169
169
  "in": "query"
170
170
  },
171
171
  {
172
- "description": "request body takes a list of action parameter request that is applied against all \"ids\" provided",
172
+ "description": "request body takes a list of action parameter request that is applied against all "
173
+ "\"composite_ids\" provided",
173
174
  "name": "body",
174
175
  "in": "body",
175
176
  "required": True