mcl-platform-sdk 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. mcl_platform_sdk-1.0.0/LICENSE.md +21 -0
  2. mcl_platform_sdk-1.0.0/MANIFEST.in +21 -0
  3. mcl_platform_sdk-1.0.0/PKG-INFO +305 -0
  4. mcl_platform_sdk-1.0.0/README.md +282 -0
  5. mcl_platform_sdk-1.0.0/mcl_platform_sdk/__init__.py +661 -0
  6. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/__init__.py +24 -0
  7. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/admin_api.py +1297 -0
  8. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/analysis_api.py +1351 -0
  9. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/apikey_api.py +491 -0
  10. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/application_information_api.py +386 -0
  11. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/auth_api.py +399 -0
  12. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/batch_api.py +819 -0
  13. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/config_api.py +401 -0
  14. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/data_sanitization_cdr_api.py +274 -0
  15. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/dynamic_analysis_api.py +398 -0
  16. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/engines_api.py +767 -0
  17. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/file_scanning_api.py +729 -0
  18. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/hash_lookups_api.py +552 -0
  19. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/license_api.py +412 -0
  20. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/malware_sample_sharing_api.py +530 -0
  21. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/multipart_api.py +610 -0
  22. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/reputation_service_api.py +810 -0
  23. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/stats_api.py +619 -0
  24. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/status_endpoints_api.py +235 -0
  25. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/threat_intelligence_feed_api.py +302 -0
  26. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api/yara_api.py +507 -0
  27. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api_client.py +805 -0
  28. mcl_platform_sdk-1.0.0/mcl_platform_sdk/api_response.py +21 -0
  29. mcl_platform_sdk-1.0.0/mcl_platform_sdk/configuration.py +579 -0
  30. mcl_platform_sdk-1.0.0/mcl_platform_sdk/exceptions.py +220 -0
  31. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/__init__.py +304 -0
  32. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/account_information.py +140 -0
  33. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response.py +94 -0
  34. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response_active_performance.py +118 -0
  35. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response_active_performance_hash_time.py +92 -0
  36. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response_active_performance_processing_time.py +92 -0
  37. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response_active_performance_queue_time.py +92 -0
  38. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/active_performance200_response_active_performance_wait_time.py +92 -0
  39. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/admin_import200_response.py +88 -0
  40. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/analysis_rules200_response_inner.py +90 -0
  41. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/analysis_summary.py +126 -0
  42. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/analysis_summary_dlp_info.py +98 -0
  43. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/analysis_summary_sandbox.py +94 -0
  44. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/analysis_summary_vulnerability.py +105 -0
  45. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apikey_usage.py +97 -0
  46. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apikey_usage1.py +99 -0
  47. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results.py +124 -0
  48. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application.py +126 -0
  49. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_activities_inner.py +102 -0
  50. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_activities_inner_intent_filters_inner.py +108 -0
  51. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_launcher_activities_inner.py +102 -0
  52. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_launcher_activities_inner_intent_filters_inner.py +108 -0
  53. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_launcher_activities_inner_intent_filters_inner_actions_inner.py +88 -0
  54. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_application_launcher_activities_inner_intent_filters_inner_categories_inner.py +88 -0
  55. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/apk_hash_results_uses_sdk.py +90 -0
  56. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_close200_response.py +110 -0
  57. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_close200_response_process_info.py +98 -0
  58. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_close200_response_scan_results.py +118 -0
  59. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_create200_response.py +88 -0
  60. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response.py +110 -0
  61. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response_batch_files.py +102 -0
  62. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response_batch_files_files_in_batch_inner.py +132 -0
  63. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response_batch_files_files_in_batch_inner_process_info.py +94 -0
  64. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response_process_info.py +98 -0
  65. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/batch_status200_response_scan_results.py +118 -0
  66. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/bulk_hash_lookup_results.py +96 -0
  67. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/city.py +88 -0
  68. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_audit_log_request.py +88 -0
  69. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_delete_skip_hash200_response.py +92 -0
  70. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_cache_user_request.py +88 -0
  71. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_custom_response_header200_response.py +102 -0
  72. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_custom_response_header200_response_include_address.py +90 -0
  73. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_custom_response_header200_response_specify_users_agent.py +90 -0
  74. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_health_check200_response.py +106 -0
  75. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_health_check200_response_engines_inner.py +90 -0
  76. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_proxy200_response.py +106 -0
  77. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_proxy200_response_feature_proxy_inner.py +118 -0
  78. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_sessioncookie200_response.py +88 -0
  79. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_skip_hash200_response.py +92 -0
  80. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_sync_scan_timeout200_response.py +88 -0
  81. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_sync_scan_timeout500_response.py +138 -0
  82. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_sync_scan_timeout500_response_one_of.py +88 -0
  83. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_get_sync_scan_timeout500_response_one_of1.py +88 -0
  84. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_post_proxy_testconnection200_response.py +88 -0
  85. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_post_proxy_testconnection400_response.py +152 -0
  86. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_post_proxy_testconnection_request.py +98 -0
  87. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_put_cache_user400_response.py +98 -0
  88. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_sanitized_repo_request.py +88 -0
  89. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_session_request.py +94 -0
  90. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_health_check400_response.py +138 -0
  91. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_health_check400_response_one_of.py +88 -0
  92. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_health_check400_response_one_of1.py +88 -0
  93. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_health_check_request.py +94 -0
  94. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response.py +180 -0
  95. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response_one_of.py +88 -0
  96. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response_one_of1.py +88 -0
  97. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response_one_of2.py +88 -0
  98. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response_one_of3.py +88 -0
  99. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy400_response_one_of4.py +88 -0
  100. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_proxy_request.py +108 -0
  101. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_request.py +114 -0
  102. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_request_disabledupdate_inner.py +92 -0
  103. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_sync_scan_timeout500_response.py +138 -0
  104. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_sync_scan_timeout500_response_one_of.py +88 -0
  105. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_update_sync_scan_timeout_request.py +88 -0
  106. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/config_webhook200_response.py +98 -0
  107. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/country.py +88 -0
  108. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post200_response.py +88 -0
  109. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response.py +222 -0
  110. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of.py +88 -0
  111. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of1.py +88 -0
  112. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of2.py +88 -0
  113. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of3.py +88 -0
  114. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of4.py +88 -0
  115. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of5.py +88 -0
  116. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of6.py +88 -0
  117. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post400_response_one_of7.py +88 -0
  118. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post403_response.py +88 -0
  119. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post500_response.py +166 -0
  120. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post500_response_one_of.py +88 -0
  121. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post500_response_one_of1.py +88 -0
  122. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post500_response_one_of2.py +88 -0
  123. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/create_multipart_upload_post500_response_one_of3.py +88 -0
  124. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/deleted_sanitized_version_of_the_file.py +92 -0
  125. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/domain_bulk_lookup_request.py +88 -0
  126. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/domain_reputation.py +94 -0
  127. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engine_definition_results.py +182 -0
  128. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engine_disable200_response.py +88 -0
  129. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engine_enable200_response.py +88 -0
  130. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engine_pin200_response.py +98 -0
  131. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engine_unpin200_response.py +98 -0
  132. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/engines_status200_response_inner.py +126 -0
  133. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/error.py +90 -0
  134. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/exif_hash_results.py +122 -0
  135. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/failed_request.py +93 -0
  136. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/failed_request1.py +94 -0
  137. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/feed_latestcleanhashes200_response.py +102 -0
  138. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/feed_latestcleanhashes200_response_hashes_inner.py +104 -0
  139. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response.py +148 -0
  140. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info.py +150 -0
  141. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_hits.py +92 -0
  142. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_hits_ccn.py +98 -0
  143. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_hits_ccn_hits_inner.py +122 -0
  144. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_metadata_removal.py +98 -0
  145. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_redact.py +98 -0
  146. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_dlp_info_watermark.py +98 -0
  147. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner.py +140 -0
  148. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_extracted_files_inner.py +136 -0
  149. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_extracted_files_inner_file_info.py +131 -0
  150. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_extracted_files_inner_process_info.py +131 -0
  151. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_extracted_files_inner_process_info_processing_time_details.py +104 -0
  152. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_extracted_files_inner_scan_results.py +126 -0
  153. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_process_info.py +131 -0
  154. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_extracted_files_inner_process_info_processing_time_details.py +106 -0
  155. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_process_info.py +131 -0
  156. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_get_all_child_files200_response_process_info_processing_time_details.py +108 -0
  157. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post200_response.py +144 -0
  158. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response.py +250 -0
  159. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of.py +88 -0
  160. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of1.py +88 -0
  161. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of2.py +88 -0
  162. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of3.py +88 -0
  163. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of4.py +88 -0
  164. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of5.py +88 -0
  165. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post400_response_one_of6.py +88 -0
  166. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post403_response.py +88 -0
  167. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post408_response.py +88 -0
  168. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post500_response.py +180 -0
  169. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_analysis_sync_post500_response_one_of.py +88 -0
  170. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_info.py +96 -0
  171. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_info1.py +135 -0
  172. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_info1_signer_infos_inner.py +98 -0
  173. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_info2.py +98 -0
  174. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results.py +174 -0
  175. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info.py +150 -0
  176. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_hits.py +92 -0
  177. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_hits_ccn.py +98 -0
  178. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_hits_ccn_hits_inner.py +122 -0
  179. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_metadata_removal.py +98 -0
  180. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_redact.py +98 -0
  181. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_dlp_info_watermark.py +98 -0
  182. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_download_info.py +94 -0
  183. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_extracted_files.py +96 -0
  184. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_extracted_files_files_in_archive_inner.py +100 -0
  185. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_extraction_info.py +106 -0
  186. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_filetype_info.py +98 -0
  187. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_filetype_info_file_info.py +110 -0
  188. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info.py +135 -0
  189. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_post_processing.py +102 -0
  190. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_post_processing_sanitization_details.py +121 -0
  191. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_post_processing_sanitization_details_all_of_details_inner.py +111 -0
  192. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_post_processing_sanitization_details_all_of_details_inner_details.py +104 -0
  193. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_post_processing_sanitization_details_all_of_sanitized_file_info.py +90 -0
  194. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_process_info_processing_time_details.py +106 -0
  195. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_sanitized.py +109 -0
  196. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_sanitized_failure_reasons.py +92 -0
  197. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info.py +94 -0
  198. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result.py +112 -0
  199. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product.py +140 -0
  200. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_product.py +90 -0
  201. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_vendor.py +90 -0
  202. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_version_data.py +92 -0
  203. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_vulnerabilites_inner.py +110 -0
  204. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_vulnerabilites_inner_details.py +104 -0
  205. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_vulnerability_info_result_detected_product_vulnerabilites_inner_details_cvss.py +104 -0
  206. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_scan_results_yara.py +100 -0
  207. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_upload403_response.py +88 -0
  208. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_upload411_response.py +88 -0
  209. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_upload_results.py +134 -0
  210. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/file_upload_results_sandbox_error.py +90 -0
  211. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/geo_info.py +114 -0
  212. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/get_license_backup200_response.py +88 -0
  213. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/hash_lookup_results.py +127 -0
  214. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/headers.py +98 -0
  215. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response.py +120 -0
  216. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response_database.py +88 -0
  217. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response_engines_inner.py +92 -0
  218. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response_license.py +98 -0
  219. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response_number_active_av_engines.py +90 -0
  220. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/health_check200_response_scan_queue.py +94 -0
  221. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/imported_dll.py +90 -0
  222. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/ip_bulk_lookup_request.py +88 -0
  223. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/ip_reputation.py +100 -0
  224. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/license_activation_request.py +92 -0
  225. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/license_get200_response.py +102 -0
  226. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/license_upload200_response.py +88 -0
  227. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/location.py +89 -0
  228. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/lookup_results.py +100 -0
  229. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/multiple_domain_reputation.py +96 -0
  230. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/multiple_hash_lookup_request.py +88 -0
  231. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/multiple_ip_reputation.py +96 -0
  232. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/multiple_url_reputation.py +96 -0
  233. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/nodes_status200_response_inner.py +100 -0
  234. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/nodes_status200_response_inner_statuses_inner.py +138 -0
  235. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/nodes_status200_response_inner_statuses_inner_engines_inner.py +110 -0
  236. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/nodes_status200_response_inner_statuses_inner_issues_inner.py +90 -0
  237. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/nodes_status200_response_inner_statuses_inner_scan_queue_details.py +94 -0
  238. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/optional_headers.py +110 -0
  239. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/pe_lookup_results.py +140 -0
  240. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/per_engine_result.py +94 -0
  241. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/post_license_backup200_response.py +88 -0
  242. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/post_processing.py +96 -0
  243. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/process_info.py +102 -0
  244. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/product_version200_response.py +90 -0
  245. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/repository_scan_request.py +94 -0
  246. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/repository_scan_results.py +96 -0
  247. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/resource_id.py +90 -0
  248. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/resource_info.py +98 -0
  249. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/retrieve_blocked_leaf_file200_response.py +100 -0
  250. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/retrieve_blocked_leaf_file200_response_details_inner.py +106 -0
  251. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/retrieve_blocked_leaf_file200_response_details_inner_process_info.py +92 -0
  252. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/retrieve_blocked_leaf_file200_response_details_inner_process_info_post_processing.py +90 -0
  253. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/role_create200_response.py +100 -0
  254. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/role_create_request.py +96 -0
  255. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/role_create_request_rights.py +307 -0
  256. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_lookup200_response.py +158 -0
  257. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_response_for_a_file.py +108 -0
  258. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_response_for_a_file1.py +108 -0
  259. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_response_for_aurl.py +98 -0
  260. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_response_for_aurl_final_verdict.py +92 -0
  261. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_url_scan_request.py +88 -0
  262. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sandbox_url_upload_results.py +94 -0
  263. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sanitization_offending_file.py +94 -0
  264. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sanitized.py +89 -0
  265. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/sanitized_file_download_link.py +92 -0
  266. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_details.py +92 -0
  267. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_history.py +96 -0
  268. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_history1.py +102 -0
  269. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_reports.py +100 -0
  270. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_result_history.py +98 -0
  271. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_result_submission_summary.py +94 -0
  272. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_result_submission_summary1.py +112 -0
  273. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_result_submission_summary1_scan_details.py +92 -0
  274. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_result_submission_summary1_scan_details_clam_av.py +100 -0
  275. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/scan_results.py +105 -0
  276. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/section_header.py +110 -0
  277. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/source.py +96 -0
  278. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/status_version200_response.py +88 -0
  279. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/subdivision.py +88 -0
  280. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_delete400_response.py +138 -0
  281. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_delete400_response_one_of.py +88 -0
  282. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_delete409_response.py +152 -0
  283. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_delete409_response_one_of.py +88 -0
  284. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_get200_response.py +94 -0
  285. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_get400_response.py +88 -0
  286. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_get404_response.py +88 -0
  287. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post200_response.py +88 -0
  288. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post400_response.py +152 -0
  289. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post400_response_one_of.py +88 -0
  290. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post400_response_one_of1.py +88 -0
  291. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post409_response.py +138 -0
  292. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post409_response_one_of.py +88 -0
  293. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post409_response_one_of1.py +88 -0
  294. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post416_response.py +138 -0
  295. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post416_response_one_of.py +88 -0
  296. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post416_response_one_of1.py +88 -0
  297. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/upload_part_post422_response.py +88 -0
  298. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/url_bulk_lookup_request.py +88 -0
  299. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/url_reputation.py +94 -0
  300. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_change_pass_request.py +90 -0
  301. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_create200_response.py +100 -0
  302. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_create_request.py +102 -0
  303. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_login200_response.py +90 -0
  304. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_login403_response.py +88 -0
  305. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_login_request.py +90 -0
  306. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_logout200_response.py +88 -0
  307. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_logout400_response.py +88 -0
  308. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/user_logout403_response.py +88 -0
  309. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/votes.py +90 -0
  310. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/vs_version_info.py +102 -0
  311. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/webhook_status200_response.py +94 -0
  312. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_package_generate200_response.py +106 -0
  313. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_package_generate200_response_issues.py +106 -0
  314. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_package_generate200_response_issues_general_inner.py +90 -0
  315. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_package_generate200_response_issues_source_inner.py +90 -0
  316. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_sources_get200_response.py +106 -0
  317. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_sources_get200_response_http_sources_inner.py +100 -0
  318. mcl_platform_sdk-1.0.0/mcl_platform_sdk/models/yara_sources_get200_response_local_sources_inner.py +100 -0
  319. mcl_platform_sdk-1.0.0/mcl_platform_sdk/py.typed +0 -0
  320. mcl_platform_sdk-1.0.0/mcl_platform_sdk/rest.py +264 -0
  321. mcl_platform_sdk-1.0.0/mcl_platform_sdk.egg-info/PKG-INFO +305 -0
  322. mcl_platform_sdk-1.0.0/mcl_platform_sdk.egg-info/SOURCES.txt +330 -0
  323. mcl_platform_sdk-1.0.0/mcl_platform_sdk.egg-info/dependency_links.txt +1 -0
  324. mcl_platform_sdk-1.0.0/mcl_platform_sdk.egg-info/requires.txt +4 -0
  325. mcl_platform_sdk-1.0.0/mcl_platform_sdk.egg-info/top_level.txt +2 -0
  326. mcl_platform_sdk-1.0.0/pyproject.toml +97 -0
  327. mcl_platform_sdk-1.0.0/requirements.txt +4 -0
  328. mcl_platform_sdk-1.0.0/setup.cfg +7 -0
  329. mcl_platform_sdk-1.0.0/setup.py +50 -0
  330. mcl_platform_sdk-1.0.0/tests/__init__.py +7 -0
  331. mcl_platform_sdk-1.0.0/tests/exemple_all_workflows.py +211 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OPSWAT
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ # Include important files
2
+ include README.md
3
+ include LICENSE.md
4
+ include requirements.txt
5
+ include setup.py
6
+ include pyproject.toml
7
+
8
+ # Include the package
9
+ recursive-include mcl_platform_sdk *.py
10
+
11
+ # Include exemples folder
12
+ recursive-include exemples *.py
13
+ include exemples/*.pdf
14
+
15
+ # Exclude unnecessary files
16
+ exclude .gitignore
17
+ exclude git_push.sh
18
+ recursive-exclude venv *
19
+ recursive-exclude * __pycache__
20
+ recursive-exclude * *.py[co]
21
+ recursive-exclude * .DS_Store
@@ -0,0 +1,305 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcl_platform_sdk
3
+ Version: 1.0.0
4
+ Summary: OPSWAT MetaDefender Cloud Python SDK
5
+ Home-page: https://github.com/opswat/mcl-platform-sdk
6
+ Author: Florentina Gheorma
7
+ Author-email: Florentina Gheorma <gheorma.florentina@opswat.com>
8
+ License: MIT
9
+ Project-URL: Repository, https://github.com/opswat/mcl-platform-sdk
10
+ Project-URL: Homepage, https://www.opswat.com/
11
+ Project-URL: Documentation, https://docs.opswat.com/
12
+ Keywords: OPSWAT,MetaDefender,MetaDefender Cloud,Security,Malware Scanning
13
+ Requires-Python: >=3.9
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE.md
16
+ Requires-Dist: urllib3<3.0.0,>=2.1.0
17
+ Requires-Dist: python-dateutil>=2.8.2
18
+ Requires-Dist: pydantic>=2
19
+ Requires-Dist: typing-extensions>=4.7.1
20
+ Dynamic: author
21
+ Dynamic: home-page
22
+ Dynamic: license-file
23
+
24
+ # MetaDefender Python SDK
25
+
26
+ [![PyPI version](https://img.shields.io/pypi/v/mcl-platform-sdk.svg)](https://pypi.org/project/mcl-platform-sdk/)
27
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE.md)
28
+
29
+ Python SDK for MetaDefender Cloud - file scanning, threat detection, and CDR with 20+ anti-malware engines.
30
+
31
+ ## Versions
32
+
33
+ - API version: `4.0`
34
+ - SDK version: `1.0.0`
35
+
36
+ ## About the API
37
+
38
+ MetaDefender SDK provides an interface for interacting with MetaDefender Cloud and Core services. It enables file analysis with 20+ anti-malware engines, Deep Content Disarm and Reconstruction (CDR), sandbox analysis, and more.
39
+
40
+ ### Key Features of MetaDefender Cloud
41
+
42
+ - **File Analysis** – Scan files using 20+ anti-malware engines
43
+ - **Deep CDR** – Supports sanitization of 100+ file types
44
+ - **Sandbox Analysis** – Detects unknown and targeted attacks through dynamic analysis
45
+
46
+ ## Maintainer: publish to Test PyPI
47
+
48
+ Build and upload with a Test PyPI API token (non-interactive):
49
+
50
+ ```bash
51
+ python -m pip install build twine && python -m build
52
+ export TWINE_USERNAME=__token__
53
+ export TWINE_PASSWORD=pypi-your-testpypi-token
54
+ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
55
+ ```
56
+
57
+ See **[docs/PUBLISHING.md](docs/PUBLISHING.md)** for details and production PyPI.
58
+
59
+ ## Table of Contents
60
+
61
+ - [Versions](#versions)
62
+ - [About the API](#about-the-api)
63
+ - [Setup & Configuration](#setup--configuration)
64
+ - [Supported Python Versions](#supported-python-versions)
65
+ - [Installation](#installation)
66
+ - [Authentication](#authentication)
67
+ - [Basic Usage](#basic-usage)
68
+ - [API Services](#api-services)
69
+ - [File Scanning](#file-scanning)
70
+ - [Data Sanitization (CDR)](#data-sanitization-cdr)
71
+ - [Hash Lookups](#hash-lookups)
72
+ - [Reputation Service](#reputation-service)
73
+ - [Dynamic Analysis (Sandbox)](#dynamic-analysis-sandbox)
74
+ - [API Key Management](#api-key-management)
75
+ - [Error Handling](#error-handling)
76
+ - [Example Workflow](#example-workflow)
77
+ - [License](#license)
78
+
79
+ ## Setup & Configuration
80
+
81
+ ### Supported Python Versions
82
+
83
+ This SDK is compatible with the following versions:
84
+ - Python 3.9 or higher
85
+ - pip package manager
86
+
87
+ ## Installation
88
+
89
+ Install the SDK using pip:
90
+
91
+ ```bash
92
+ pip install mcl-platform-sdk
93
+ ```
94
+
95
+ **Requirements:** Python 3.9 or higher
96
+
97
+ **Import name:** After install, import the SDK as **`mcl_platform_sdk`**:
98
+
99
+ ```python
100
+ from mcl_platform_sdk import ApiClient
101
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
102
+ ```
103
+
104
+ ## Authentication
105
+
106
+ Set your API key as an environment variable:
107
+
108
+ ```bash
109
+ export METADEFENDER_APIKEY="YOUR_API_KEY_HERE"
110
+ ```
111
+
112
+ The SDK automatically reads from `METADEFENDER_APIKEY`. Alternatively, pass it directly:
113
+
114
+ ```python
115
+ from mcl_platform_sdk import ApiClient
116
+
117
+ config = ApiClient(api_key="YOUR_API_KEY")
118
+ ```
119
+
120
+ The ApiClient automatically reads the API key from the METADEFENDER_APIKEY environment variable.
121
+
122
+ ### Optional parameters (`headers` options bag)
123
+
124
+ All SDK methods keep only **required** path/body parameters in the function signature.
125
+ All **optional request parameters** (both HTTP headers *and* query parameters) are passed via:
126
+
127
+ - `headers: Optional[Dict[str, Any]] = None`
128
+
129
+ Example:
130
+
131
+ ```python
132
+ fs_api.analyze_file(file=data, headers={"filename": "test.pdf", "rule": "sanitize"})
133
+ ```
134
+
135
+ ### Basic Usage
136
+
137
+ ```python
138
+ from mcl_platform_sdk import ApiClient
139
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
140
+
141
+ # Initialize client - reads METADEFENDER_APIKEY automatically
142
+ client = ApiClient()
143
+ fs_api = FileScanningApi(client)
144
+
145
+ # Upload and scan file
146
+ with open('test.pdf', 'rb') as f:
147
+ upload = fs_api.analyze_file(
148
+ file=f.read(),
149
+ headers={
150
+ "filename": "test.pdf",
151
+ "rule": "sanitize",
152
+ }
153
+ )
154
+
155
+ # Poll for results with automatic timeout (configured via headers)
156
+ try:
157
+ result = fs_api.get_file_analysis(
158
+ upload.data_id,
159
+ headers={
160
+ "timeout": 60,
161
+ "poll_interval": 2, # seconds (optional)
162
+ },
163
+ )
164
+ print('Scan result:', result.scan_results.scan_all_result_a)
165
+ except TimeoutError:
166
+ print('Scan failed to complete in 60 seconds')
167
+ ```
168
+
169
+ ## API Services
170
+
171
+ ### File Scanning
172
+
173
+ ```python
174
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
175
+
176
+ fs_api = FileScanningApi(client)
177
+
178
+ # Upload file
179
+ with open('file.pdf', 'rb') as f:
180
+ upload = fs_api.analyze_file(
181
+ file=f.read(),
182
+ headers={
183
+ "filename": "file.pdf",
184
+ "rule": "sanitize", # Options: multiscan, sanitize, cdr, unarchive, dlp
185
+ }
186
+ )
187
+
188
+ # Poll for scan completion (recommended)
189
+ try:
190
+ result = fs_api.get_file_analysis(upload.data_id, headers={"timeout": 60})
191
+ print('Scan completed:', result.scan_results.scan_all_result_a)
192
+ except TimeoutError:
193
+ print('Scan failed to complete in 60 seconds')
194
+ ```
195
+
196
+ ### Data Sanitization (CDR)
197
+
198
+ ```python
199
+ from mcl_platform_sdk.api.data_sanitization_cdr_api import DataSanitizationCDRApi
200
+
201
+ cdr_api = DataSanitizationCDRApi(client)
202
+
203
+ # Get sanitized file URL
204
+ sanitized = cdr_api.file_sanitized(data_id)
205
+ print('Download URL:', sanitized.sanitized_file_path)
206
+
207
+ # Cleanup
208
+ cdr_api.file_converted_data_id_delete(data_id)
209
+ ```
210
+
211
+ ### Hash Lookups
212
+
213
+ ```python
214
+ from mcl_platform_sdk.api.hash_lookups_api import HashLookupsApi
215
+
216
+ hash_api = HashLookupsApi(client)
217
+ result = hash_api.hash_lookup('640CCA22FBF439406BA200EEFB9C52BE87BC97D6')
218
+ print('Hash lookup result:', result)
219
+ ```
220
+
221
+ ### Reputation Service
222
+
223
+ ```python
224
+ from mcl_platform_sdk.api.reputation_service_api import ReputationServiceApi
225
+
226
+ rep_api = ReputationServiceApi(client)
227
+
228
+ # Check IP, domain, or URL reputation
229
+ ip_rep = rep_api.i_p_lookup(observable_ip='198.15.127.171')
230
+ domain_rep = rep_api.domain_lookup(observable_domain='example.com')
231
+ url_rep = rep_api.url_lookup(observable_url='http://suspicious-url.com')
232
+ ```
233
+
234
+ ### Dynamic Analysis (Sandbox)
235
+
236
+ ```python
237
+ from mcl_platform_sdk.api.dynamic_analysis_api import DynamicAnalysisApi
238
+
239
+ sandbox_api = DynamicAnalysisApi(client)
240
+ sandbox_res = sandbox_api.sandbox_lookup(sandbox_id)
241
+ print('Verdict:', sandbox_res.final_verdict)
242
+ ```
243
+
244
+ ### API Key Management
245
+
246
+ ```python
247
+ from mcl_platform_sdk.api.apikey_api import ApikeyApi
248
+
249
+ apikey_api = ApikeyApi(client)
250
+
251
+ # Get API key info
252
+ info = apikey_api.get_api_key()
253
+ print('Nickname:', info.nickname)
254
+
255
+ # Check limits
256
+ limits = apikey_api.apikey_limits()
257
+ remaining = apikey_api.apikey_limits_status_get()
258
+ history = apikey_api.apikey_scan_history_get()
259
+ ```
260
+
261
+ ## Error Handling
262
+
263
+ ```python
264
+ from mcl_platform_sdk.rest import ApiException
265
+
266
+ try:
267
+ result = fs_api.get_file_analysis(data_id)
268
+ except ApiException as e:
269
+ print('Status:', e.status)
270
+ print('Details:', e.body)
271
+ except TimeoutError as e:
272
+ print('Timeout:', e)
273
+ except Exception as e:
274
+ print('Error:', e)
275
+ ```
276
+
277
+ ## Example Workflow
278
+
279
+ The SDK includes a comprehensive example script. After installation:
280
+
281
+ ```bash
282
+ # Set your API key
283
+ export METADEFENDER_APIKEY="YOUR_API_KEY"
284
+
285
+ # Run the example workflow
286
+ python -m exemples.exemple_all_workflows
287
+ ```
288
+
289
+ The example demonstrates:
290
+ - API key validation
291
+ - File upload and scanning
292
+ - Polling for results
293
+ - Sanitized file retrieval
294
+ - Hash lookups
295
+ - IP/Domain/URL reputation checks
296
+
297
+ ## For maintainers: build and publish
298
+
299
+ To build the package and publish to PyPI, see **[docs/PUBLISHING.md](docs/PUBLISHING.md)** for the full build and deploy process.
300
+
301
+ To regenerate the client from OpenAPI Generator, use **`packageName=mcl_platform_sdk`** . See **[docs/REGENERATING_CLIENT.md](docs/REGENERATING_CLIENT.md)**.
302
+
303
+ ## License
304
+
305
+ MIT License - see [LICENSE.md](LICENSE.md) for details.
@@ -0,0 +1,282 @@
1
+ # MetaDefender Python SDK
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/mcl-platform-sdk.svg)](https://pypi.org/project/mcl-platform-sdk/)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE.md)
5
+
6
+ Python SDK for MetaDefender Cloud - file scanning, threat detection, and CDR with 20+ anti-malware engines.
7
+
8
+ ## Versions
9
+
10
+ - API version: `4.0`
11
+ - SDK version: `1.0.0`
12
+
13
+ ## About the API
14
+
15
+ MetaDefender SDK provides an interface for interacting with MetaDefender Cloud and Core services. It enables file analysis with 20+ anti-malware engines, Deep Content Disarm and Reconstruction (CDR), sandbox analysis, and more.
16
+
17
+ ### Key Features of MetaDefender Cloud
18
+
19
+ - **File Analysis** – Scan files using 20+ anti-malware engines
20
+ - **Deep CDR** – Supports sanitization of 100+ file types
21
+ - **Sandbox Analysis** – Detects unknown and targeted attacks through dynamic analysis
22
+
23
+ ## Maintainer: publish to Test PyPI
24
+
25
+ Build and upload with a Test PyPI API token (non-interactive):
26
+
27
+ ```bash
28
+ python -m pip install build twine && python -m build
29
+ export TWINE_USERNAME=__token__
30
+ export TWINE_PASSWORD=pypi-your-testpypi-token
31
+ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
32
+ ```
33
+
34
+ See **[docs/PUBLISHING.md](docs/PUBLISHING.md)** for details and production PyPI.
35
+
36
+ ## Table of Contents
37
+
38
+ - [Versions](#versions)
39
+ - [About the API](#about-the-api)
40
+ - [Setup & Configuration](#setup--configuration)
41
+ - [Supported Python Versions](#supported-python-versions)
42
+ - [Installation](#installation)
43
+ - [Authentication](#authentication)
44
+ - [Basic Usage](#basic-usage)
45
+ - [API Services](#api-services)
46
+ - [File Scanning](#file-scanning)
47
+ - [Data Sanitization (CDR)](#data-sanitization-cdr)
48
+ - [Hash Lookups](#hash-lookups)
49
+ - [Reputation Service](#reputation-service)
50
+ - [Dynamic Analysis (Sandbox)](#dynamic-analysis-sandbox)
51
+ - [API Key Management](#api-key-management)
52
+ - [Error Handling](#error-handling)
53
+ - [Example Workflow](#example-workflow)
54
+ - [License](#license)
55
+
56
+ ## Setup & Configuration
57
+
58
+ ### Supported Python Versions
59
+
60
+ This SDK is compatible with the following versions:
61
+ - Python 3.9 or higher
62
+ - pip package manager
63
+
64
+ ## Installation
65
+
66
+ Install the SDK using pip:
67
+
68
+ ```bash
69
+ pip install mcl-platform-sdk
70
+ ```
71
+
72
+ **Requirements:** Python 3.9 or higher
73
+
74
+ **Import name:** After install, import the SDK as **`mcl_platform_sdk`**:
75
+
76
+ ```python
77
+ from mcl_platform_sdk import ApiClient
78
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
79
+ ```
80
+
81
+ ## Authentication
82
+
83
+ Set your API key as an environment variable:
84
+
85
+ ```bash
86
+ export METADEFENDER_APIKEY="YOUR_API_KEY_HERE"
87
+ ```
88
+
89
+ The SDK automatically reads from `METADEFENDER_APIKEY`. Alternatively, pass it directly:
90
+
91
+ ```python
92
+ from mcl_platform_sdk import ApiClient
93
+
94
+ config = ApiClient(api_key="YOUR_API_KEY")
95
+ ```
96
+
97
+ The ApiClient automatically reads the API key from the METADEFENDER_APIKEY environment variable.
98
+
99
+ ### Optional parameters (`headers` options bag)
100
+
101
+ All SDK methods keep only **required** path/body parameters in the function signature.
102
+ All **optional request parameters** (both HTTP headers *and* query parameters) are passed via:
103
+
104
+ - `headers: Optional[Dict[str, Any]] = None`
105
+
106
+ Example:
107
+
108
+ ```python
109
+ fs_api.analyze_file(file=data, headers={"filename": "test.pdf", "rule": "sanitize"})
110
+ ```
111
+
112
+ ### Basic Usage
113
+
114
+ ```python
115
+ from mcl_platform_sdk import ApiClient
116
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
117
+
118
+ # Initialize client - reads METADEFENDER_APIKEY automatically
119
+ client = ApiClient()
120
+ fs_api = FileScanningApi(client)
121
+
122
+ # Upload and scan file
123
+ with open('test.pdf', 'rb') as f:
124
+ upload = fs_api.analyze_file(
125
+ file=f.read(),
126
+ headers={
127
+ "filename": "test.pdf",
128
+ "rule": "sanitize",
129
+ }
130
+ )
131
+
132
+ # Poll for results with automatic timeout (configured via headers)
133
+ try:
134
+ result = fs_api.get_file_analysis(
135
+ upload.data_id,
136
+ headers={
137
+ "timeout": 60,
138
+ "poll_interval": 2, # seconds (optional)
139
+ },
140
+ )
141
+ print('Scan result:', result.scan_results.scan_all_result_a)
142
+ except TimeoutError:
143
+ print('Scan failed to complete in 60 seconds')
144
+ ```
145
+
146
+ ## API Services
147
+
148
+ ### File Scanning
149
+
150
+ ```python
151
+ from mcl_platform_sdk.api.file_scanning_api import FileScanningApi
152
+
153
+ fs_api = FileScanningApi(client)
154
+
155
+ # Upload file
156
+ with open('file.pdf', 'rb') as f:
157
+ upload = fs_api.analyze_file(
158
+ file=f.read(),
159
+ headers={
160
+ "filename": "file.pdf",
161
+ "rule": "sanitize", # Options: multiscan, sanitize, cdr, unarchive, dlp
162
+ }
163
+ )
164
+
165
+ # Poll for scan completion (recommended)
166
+ try:
167
+ result = fs_api.get_file_analysis(upload.data_id, headers={"timeout": 60})
168
+ print('Scan completed:', result.scan_results.scan_all_result_a)
169
+ except TimeoutError:
170
+ print('Scan failed to complete in 60 seconds')
171
+ ```
172
+
173
+ ### Data Sanitization (CDR)
174
+
175
+ ```python
176
+ from mcl_platform_sdk.api.data_sanitization_cdr_api import DataSanitizationCDRApi
177
+
178
+ cdr_api = DataSanitizationCDRApi(client)
179
+
180
+ # Get sanitized file URL
181
+ sanitized = cdr_api.file_sanitized(data_id)
182
+ print('Download URL:', sanitized.sanitized_file_path)
183
+
184
+ # Cleanup
185
+ cdr_api.file_converted_data_id_delete(data_id)
186
+ ```
187
+
188
+ ### Hash Lookups
189
+
190
+ ```python
191
+ from mcl_platform_sdk.api.hash_lookups_api import HashLookupsApi
192
+
193
+ hash_api = HashLookupsApi(client)
194
+ result = hash_api.hash_lookup('640CCA22FBF439406BA200EEFB9C52BE87BC97D6')
195
+ print('Hash lookup result:', result)
196
+ ```
197
+
198
+ ### Reputation Service
199
+
200
+ ```python
201
+ from mcl_platform_sdk.api.reputation_service_api import ReputationServiceApi
202
+
203
+ rep_api = ReputationServiceApi(client)
204
+
205
+ # Check IP, domain, or URL reputation
206
+ ip_rep = rep_api.i_p_lookup(observable_ip='198.15.127.171')
207
+ domain_rep = rep_api.domain_lookup(observable_domain='example.com')
208
+ url_rep = rep_api.url_lookup(observable_url='http://suspicious-url.com')
209
+ ```
210
+
211
+ ### Dynamic Analysis (Sandbox)
212
+
213
+ ```python
214
+ from mcl_platform_sdk.api.dynamic_analysis_api import DynamicAnalysisApi
215
+
216
+ sandbox_api = DynamicAnalysisApi(client)
217
+ sandbox_res = sandbox_api.sandbox_lookup(sandbox_id)
218
+ print('Verdict:', sandbox_res.final_verdict)
219
+ ```
220
+
221
+ ### API Key Management
222
+
223
+ ```python
224
+ from mcl_platform_sdk.api.apikey_api import ApikeyApi
225
+
226
+ apikey_api = ApikeyApi(client)
227
+
228
+ # Get API key info
229
+ info = apikey_api.get_api_key()
230
+ print('Nickname:', info.nickname)
231
+
232
+ # Check limits
233
+ limits = apikey_api.apikey_limits()
234
+ remaining = apikey_api.apikey_limits_status_get()
235
+ history = apikey_api.apikey_scan_history_get()
236
+ ```
237
+
238
+ ## Error Handling
239
+
240
+ ```python
241
+ from mcl_platform_sdk.rest import ApiException
242
+
243
+ try:
244
+ result = fs_api.get_file_analysis(data_id)
245
+ except ApiException as e:
246
+ print('Status:', e.status)
247
+ print('Details:', e.body)
248
+ except TimeoutError as e:
249
+ print('Timeout:', e)
250
+ except Exception as e:
251
+ print('Error:', e)
252
+ ```
253
+
254
+ ## Example Workflow
255
+
256
+ The SDK includes a comprehensive example script. After installation:
257
+
258
+ ```bash
259
+ # Set your API key
260
+ export METADEFENDER_APIKEY="YOUR_API_KEY"
261
+
262
+ # Run the example workflow
263
+ python -m exemples.exemple_all_workflows
264
+ ```
265
+
266
+ The example demonstrates:
267
+ - API key validation
268
+ - File upload and scanning
269
+ - Polling for results
270
+ - Sanitized file retrieval
271
+ - Hash lookups
272
+ - IP/Domain/URL reputation checks
273
+
274
+ ## For maintainers: build and publish
275
+
276
+ To build the package and publish to PyPI, see **[docs/PUBLISHING.md](docs/PUBLISHING.md)** for the full build and deploy process.
277
+
278
+ To regenerate the client from OpenAPI Generator, use **`packageName=mcl_platform_sdk`** . See **[docs/REGENERATING_CLIENT.md](docs/REGENERATING_CLIENT.md)**.
279
+
280
+ ## License
281
+
282
+ MIT License - see [LICENSE.md](LICENSE.md) for details.