mmisp-lib 0.1.10__tar.gz → 0.1.11__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 (187) hide show
  1. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/PKG-INFO +1 -1
  2. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/pyproject.toml +1 -1
  3. mmisp_lib-0.1.11/src/mmisp/api_schemas/attributes.py +440 -0
  4. mmisp_lib-0.1.11/src/mmisp/api_schemas/auth_keys.py +123 -0
  5. mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication/start_login_response.py → mmisp_lib-0.1.11/src/mmisp/api_schemas/authentication.py +20 -3
  6. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/get_tag_response.py → mmisp_lib-0.1.11/src/mmisp/api_schemas/common.py +0 -16
  7. mmisp_lib-0.1.11/src/mmisp/api_schemas/events.py +595 -0
  8. mmisp_lib-0.1.11/src/mmisp/api_schemas/feeds.py +139 -0
  9. mmisp_lib-0.1.11/src/mmisp/api_schemas/galaxies.py +193 -0
  10. mmisp_lib-0.1.10/src/mmisp/api_schemas/noticelists/get_noticelist_response.py → mmisp_lib-0.1.11/src/mmisp/api_schemas/noticelists.py +17 -10
  11. mmisp_lib-0.1.11/src/mmisp/api_schemas/objects.py +106 -0
  12. mmisp_lib-0.1.11/src/mmisp/api_schemas/sharing_groups.py +264 -0
  13. mmisp_lib-0.1.10/src/mmisp/api_schemas/sightings/create_sighting_body.py → mmisp_lib-0.1.11/src/mmisp/api_schemas/sightings.py +26 -0
  14. mmisp_lib-0.1.11/src/mmisp/api_schemas/tags.py +78 -0
  15. mmisp_lib-0.1.11/src/mmisp/api_schemas/taxonomies.py +104 -0
  16. mmisp_lib-0.1.11/src/mmisp/api_schemas/user_settings.py +75 -0
  17. mmisp_lib-0.1.10/src/mmisp/api_schemas/users/user.py → mmisp_lib-0.1.11/src/mmisp/api_schemas/users.py +10 -0
  18. mmisp_lib-0.1.11/src/mmisp/api_schemas/warninglists.py +142 -0
  19. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/lib/attributes.py +2 -2
  20. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp_lib.egg-info/PKG-INFO +1 -1
  21. mmisp_lib-0.1.11/src/mmisp_lib.egg-info/SOURCES.txt +62 -0
  22. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/add_attribute_body.py +0 -33
  23. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/add_attribute_response.py +0 -33
  24. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/add_remove_tag_attribute_response.py +0 -13
  25. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/delete_attribute_response.py +0 -8
  26. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/delete_selected_attribute_body.py +0 -9
  27. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/delete_selected_attribute_response.py +0 -13
  28. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/edit_attribute_body.py +0 -24
  29. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/edit_attributes_response.py +0 -42
  30. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/get_all_attributes_response.py +0 -38
  31. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/get_attribute_response.py +0 -41
  32. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/get_attribute_statistics_response.py +0 -31
  33. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/get_describe_types_response.py +0 -35
  34. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/restore_attribute_reponse.py +0 -25
  35. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/search_attributes_body.py +0 -74
  36. mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes/search_attributes_response.py +0 -49
  37. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/add_auth_key_body.py +0 -10
  38. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/add_auth_key_response.py +0 -20
  39. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/edit_auth_key_body.py +0 -8
  40. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/edit_auth_key_response.py +0 -24
  41. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/search_auth_keys_body.py +0 -17
  42. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/search_get_all_auth_keys_users_response.py +0 -28
  43. mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys/view_auth_key_response.py +0 -24
  44. mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication/exchange_token_login_body.py +0 -5
  45. mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication/password_login_body.py +0 -6
  46. mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication/start_login_body.py +0 -5
  47. mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication/token_response.py +0 -5
  48. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/FreeTextImportWorkerBody.py +0 -17
  49. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/__init__.py +0 -0
  50. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/add_attribute_via_free_text_import_event_body.py +0 -12
  51. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/add_attribute_via_free_text_import_event_response.py +0 -14
  52. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/add_edit_get_event_response.py +0 -234
  53. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/add_event_body.py +0 -30
  54. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/add_remove_tag_events_response.py +0 -11
  55. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/delete_event_response.py +0 -14
  56. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/edit_event_body.py +0 -28
  57. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/get_all_events_response.py +0 -99
  58. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/get_event_response.py +0 -8
  59. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/index_events_body.py +0 -30
  60. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/index_events_response.py +0 -40
  61. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/publish_event_response.py +0 -13
  62. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/search_events_body.py +0 -43
  63. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/search_events_response.py +0 -10
  64. mmisp_lib-0.1.10/src/mmisp/api_schemas/events/unpublish_event_response.py +0 -13
  65. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/__init__.py +0 -0
  66. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/cache_feed_response.py +0 -12
  67. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/create_feed_body.py +0 -30
  68. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/enable_disable_feed_response.py +0 -10
  69. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/fetch_feeds_response.py +0 -8
  70. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/get_feed_response.py +0 -47
  71. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/toggle_feed_body.py +0 -8
  72. mmisp_lib-0.1.10/src/mmisp/api_schemas/feeds/update_feed_body.py +0 -30
  73. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/__init__.py +0 -0
  74. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/attach_galaxy_cluster_body.py +0 -12
  75. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/attach_galaxy_cluster_response.py +0 -10
  76. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/delete_force_update_import_galaxy_response.py +0 -12
  77. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/export_galaxies_body.py +0 -16
  78. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/export_galaxies_response.py +0 -44
  79. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/galaxy_schema.py +0 -18
  80. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/get_all_search_galaxies_response.py +0 -22
  81. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/get_galaxy_response.py +0 -37
  82. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/import_galaxies_body.py +0 -15
  83. mmisp_lib-0.1.10/src/mmisp/api_schemas/galaxies/search_galaxies_body.py +0 -22
  84. mmisp_lib-0.1.10/src/mmisp/api_schemas/noticelists/__init__.py +0 -0
  85. mmisp_lib-0.1.10/src/mmisp/api_schemas/noticelists/get_all_noticelist_response.py +0 -10
  86. mmisp_lib-0.1.10/src/mmisp/api_schemas/objects/__init__.py +0 -0
  87. mmisp_lib-0.1.10/src/mmisp/api_schemas/objects/create_object_body.py +0 -16
  88. mmisp_lib-0.1.10/src/mmisp/api_schemas/objects/get_object_response.py +0 -47
  89. mmisp_lib-0.1.10/src/mmisp/api_schemas/objects/search_objects_body.py +0 -49
  90. mmisp_lib-0.1.10/src/mmisp/api_schemas/organisations/__init__.py +0 -0
  91. mmisp_lib-0.1.10/src/mmisp/api_schemas/roles/__init__.py +0 -0
  92. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/__init__.py +0 -0
  93. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/add_org_to_sharing_group_body.py +0 -6
  94. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/add_org_to_sharing_group_legacy_body.py +0 -5
  95. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/add_server_to_sharing_group_body.py +0 -6
  96. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/add_server_to_sharing_group_legacy_body.py +0 -5
  97. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/create_sharing_group_body.py +0 -12
  98. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/create_sharing_group_legacy_body.py +0 -23
  99. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/create_sharing_group_legacy_response.py +0 -18
  100. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/delete_sharing_group_legacy_response.py +0 -5
  101. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/get_all_sharing_groups_response.py +0 -53
  102. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/get_sharing_group_info_response.py +0 -44
  103. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/sharing_group.py +0 -19
  104. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/sharing_group_org.py +0 -8
  105. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/sharing_group_server.py +0 -8
  106. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/update_sharing_group_body.py +0 -10
  107. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/update_sharing_group_legacy_body.py +0 -28
  108. mmisp_lib-0.1.10/src/mmisp/api_schemas/sharing_groups/view_update_sharing_group_legacy_response.py +0 -40
  109. mmisp_lib-0.1.10/src/mmisp/api_schemas/sightings/__init__.py +0 -0
  110. mmisp_lib-0.1.10/src/mmisp/api_schemas/sightings/get_sighting_response.py +0 -27
  111. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/__init__.py +0 -0
  112. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/create_tag_body.py +0 -15
  113. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/delete_tag_response.py +0 -10
  114. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/search_tags_response.py +0 -26
  115. mmisp_lib-0.1.10/src/mmisp/api_schemas/tags/update_tag_body.py +0 -15
  116. mmisp_lib-0.1.10/src/mmisp/api_schemas/taxonomies/__init__.py +0 -0
  117. mmisp_lib-0.1.10/src/mmisp/api_schemas/taxonomies/export_taxonomies_response.py +0 -30
  118. mmisp_lib-0.1.10/src/mmisp/api_schemas/taxonomies/get_taxonomy_by_id_response.py +0 -30
  119. mmisp_lib-0.1.10/src/mmisp/api_schemas/taxonomies/get_taxonomy_response.py +0 -21
  120. mmisp_lib-0.1.10/src/mmisp/api_schemas/taxonomies/get_taxonomy_tags_response.py +0 -32
  121. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/__init__.py +0 -0
  122. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/get_uid_user_setting_response.py +0 -21
  123. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/get_user_settings_response.py +0 -13
  124. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/search_user_setting_body.py +0 -7
  125. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/search_user_setting_response.py +0 -11
  126. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/set_user_setting_body.py +0 -5
  127. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/set_user_setting_response.py +0 -13
  128. mmisp_lib-0.1.10/src/mmisp/api_schemas/user_settings/view_user_setting_response.py +0 -13
  129. mmisp_lib-0.1.10/src/mmisp/api_schemas/users/__init__.py +0 -0
  130. mmisp_lib-0.1.10/src/mmisp/api_schemas/users/users_view_me_response.py +0 -12
  131. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/__init__.py +0 -0
  132. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/check_value_warninglists_body.py +0 -8
  133. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/check_value_warninglists_response.py +0 -14
  134. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/create_warninglist_body.py +0 -221
  135. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/delete_warninglist_response.py +0 -13
  136. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/get_selected_all_warninglists_response.py +0 -14
  137. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/get_selected_warninglists_body.py +0 -9
  138. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/toggle_enable_warninglists_body.py +0 -10
  139. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/toggle_enable_warninglists_response.py +0 -10
  140. mmisp_lib-0.1.10/src/mmisp/api_schemas/warninglists/warninglist_response.py +0 -42
  141. mmisp_lib-0.1.10/src/mmisp/db/__init__.py +0 -0
  142. mmisp_lib-0.1.10/src/mmisp/db/models/__init__.py +0 -0
  143. mmisp_lib-0.1.10/src/mmisp/lib/__init__.py +0 -0
  144. mmisp_lib-0.1.10/src/mmisp_lib.egg-info/SOURCES.txt +0 -173
  145. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/LICENSE +0 -0
  146. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/README.md +0 -0
  147. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/setup.cfg +0 -0
  148. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/api_schemas/__init__.py +0 -0
  149. /mmisp_lib-0.1.10/src/mmisp/api_schemas/organisations/organisation.py → /mmisp_lib-0.1.11/src/mmisp/api_schemas/organisations.py +0 -0
  150. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/api_schemas/py.typed +0 -0
  151. /mmisp_lib-0.1.10/src/mmisp/api_schemas/roles/role.py → /mmisp_lib-0.1.11/src/mmisp/api_schemas/roles.py +0 -0
  152. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/api_schemas/standard_status_response.py +0 -0
  153. {mmisp_lib-0.1.10/src/mmisp/api_schemas/attributes → mmisp_lib-0.1.11/src/mmisp/db}/__init__.py +0 -0
  154. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/all_models.py +0 -0
  155. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/config.py +0 -0
  156. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/database.py +0 -0
  157. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/mixins.py +0 -0
  158. {mmisp_lib-0.1.10/src/mmisp/api_schemas/auth_keys → mmisp_lib-0.1.11/src/mmisp/db/models}/__init__.py +0 -0
  159. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/attribute.py +0 -0
  160. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/auth_key.py +0 -0
  161. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/event.py +0 -0
  162. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/feed.py +0 -0
  163. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/galaxy.py +0 -0
  164. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/galaxy_cluster.py +0 -0
  165. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/identity_provider.py +0 -0
  166. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/noticelist.py +0 -0
  167. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/object.py +0 -0
  168. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/organisation.py +0 -0
  169. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/role.py +0 -0
  170. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/server.py +0 -0
  171. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/sharing_group.py +0 -0
  172. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/sighting.py +0 -0
  173. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/tag.py +0 -0
  174. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/taxonomy.py +0 -0
  175. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/user.py +0 -0
  176. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/user_setting.py +0 -0
  177. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/models/warninglist.py +0 -0
  178. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/mypy.py +0 -0
  179. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/print_changes.py +0 -0
  180. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/db/py.typed +0 -0
  181. {mmisp_lib-0.1.10/src/mmisp/api_schemas/authentication → mmisp_lib-0.1.11/src/mmisp/lib}/__init__.py +0 -0
  182. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/lib/permissions.py +0 -0
  183. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp/lib/py.typed +0 -0
  184. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp_lib.egg-info/dependency_links.txt +0 -0
  185. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp_lib.egg-info/requires.txt +0 -0
  186. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/src/mmisp_lib.egg-info/top_level.txt +0 -0
  187. {mmisp_lib-0.1.10 → mmisp_lib-0.1.11}/tests/test_dummy.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mmisp-lib
3
- Version: 0.1.10
3
+ Version: 0.1.11
4
4
  Requires-Python: >=3.11.0
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mmisp-lib"
3
- version = "0.1.10"
3
+ version = "0.1.11"
4
4
  description = ""
5
5
  authors = []
6
6
  readme = "README.md"
@@ -0,0 +1,440 @@
1
+ from typing import Annotated, Any, Dict, Optional
2
+
3
+ from pydantic import BaseModel, Field, root_validator, validator
4
+
5
+ from mmisp.lib.attributes import (
6
+ AttributeCategories,
7
+ default_category,
8
+ inverted_categories,
9
+ literal_valid_attribute_types,
10
+ mapper_val_safe_clsname,
11
+ to_ids,
12
+ )
13
+
14
+
15
+ class GetAttributeTag(BaseModel):
16
+ id: str
17
+ name: str
18
+ colour: str
19
+ numerical_value: int | None = None
20
+ is_galaxy: bool
21
+ local: bool
22
+
23
+
24
+ class SearchAttributesObject(BaseModel):
25
+ id: str
26
+ distribution: str
27
+ sharing_group_id: str
28
+
29
+
30
+ class SearchAttributesEvent(BaseModel):
31
+ id: str
32
+ org_id: str
33
+ distribution: str
34
+ info: str
35
+ orgc_id: str
36
+ uuid: str
37
+
38
+
39
+ class SearchAttributesAttributesDetails(BaseModel):
40
+ id: str
41
+ event_id: str | None = None
42
+ object_id: str | None = None
43
+ object_relation: str | None = None
44
+ category: str
45
+ type: str
46
+ value: str
47
+ to_ids: bool
48
+ uuid: str
49
+ timestamp: str
50
+ distribution: str
51
+ sharing_group_id: str | None = None
52
+ comment: str | None = None
53
+ deleted: bool
54
+ disable_correlation: bool
55
+ first_seen: str | None = None
56
+ last_seen: str | None = None
57
+ Event: SearchAttributesEvent | None = None
58
+ Object: SearchAttributesObject | None = None
59
+ Tag: list[GetAttributeTag] = []
60
+
61
+
62
+ class SearchAttributesAttributes(BaseModel):
63
+ Attribute: list[SearchAttributesAttributesDetails]
64
+
65
+
66
+ class SearchAttributesResponse(BaseModel):
67
+ response: SearchAttributesAttributes
68
+
69
+
70
+ class SearchAttributesModelOverridesBaseScoreConfig(BaseModel):
71
+ estimative_language_confidence_in_analytic_judgment: Annotated[
72
+ int, Field(alias="estimative-language:confidence-in-analytic-judgment")
73
+ ]
74
+ estimative_language_likelihood_probability: Annotated[
75
+ int, Field(alias="estimative-language:likelihood-probability")
76
+ ]
77
+ phishing_psychological_acceptability: Annotated[int, Field(alias="phishing:psychological-acceptability")]
78
+ phishing_state: Annotated[int, Field(alias="phishing:state")]
79
+
80
+
81
+ class SearchAttributesModelOverrides(BaseModel):
82
+ lifetime: int
83
+ decay_speed: int
84
+ threshold: int
85
+ default_base_score: int
86
+ base_score_config: SearchAttributesModelOverridesBaseScoreConfig
87
+
88
+
89
+ class SearchAttributesBody(BaseModel):
90
+ returnFormat: str = "json"
91
+ page: int | None = None
92
+ limit: int | None = None
93
+ value: str | None = None
94
+ value1: str | None = None
95
+ value2: str | None = None
96
+ type: str | None = None
97
+ category: str | None = None
98
+ org: str | None = None
99
+ tags: list[str] | None = None
100
+ from_: str | None = None
101
+ to: str | None = None
102
+ last: int | None = None
103
+ eventid: str | None = None
104
+ with_attachments: Annotated[bool | None, Field(alias="withAttachments")] = None
105
+ uuid: str | None = None
106
+ publish_timestamp: str | None = None
107
+ published: bool | None = None
108
+ timestamp: str | None = None
109
+ attribute_timestamp: str | None = None
110
+ enforce_warninglist: Annotated[bool | None, Field(alias="enforceWarninglist")]
111
+ to_ids: bool | None = None
112
+ deleted: bool | None = None
113
+ event_timestamp: str | None = None
114
+ threat_level_id: str | None = None
115
+ eventinfo: str | None = None
116
+ sharinggroup: list[str] | None = None
117
+ decaying_model: Annotated[str | None, Field(alias="decayingModel")] = None
118
+ score: str | None = None
119
+ first_seen: str | None = None
120
+ last_seen: str | None = None
121
+ include_event_uuid: Annotated[bool | None, Field(alias="includeEventUuid")] = None
122
+ include_event_tags: Annotated[bool | None, Field(alias="includeEventTags")] = None
123
+ include_proposals: Annotated[bool | None, Field(alias="includeProposals")] = None
124
+ requested_attributes: list[str] | None = None
125
+ include_context: Annotated[bool | None, Field(alias="includeContext")] = None
126
+ headerless: bool | None = None
127
+ include_warninglist_hits: Annotated[bool | None, Field(alias="includeWarninglistHits")] = None
128
+ attack_galaxy: Annotated[str | None, Field(alias="attackGalaxy")] = None
129
+ object_relation: str | None = None
130
+ include_sightings: Annotated[bool | None, Field(alias="includeSightings")] = None
131
+ include_correlations: Annotated[bool | None, Field(alias="includeCorrelations")] = None
132
+ model_overrides: Annotated[SearchAttributesModelOverrides | None, Field(alias="modelOverrides")] = None
133
+ include_decay_score: Annotated[bool | None, Field(alias="includeDecayScore")] = None
134
+ include_full_model: Annotated[bool | None, Field(alias="includeFullModel")] = None
135
+ exclude_decayed: Annotated[bool | None, Field(alias="excludeDecayed")] = None
136
+
137
+ class Config:
138
+ orm_mode = True
139
+
140
+
141
+ class RestoreAttributeResponse(BaseModel):
142
+ id: str
143
+ event_id: str
144
+ object_id: str
145
+ object_relation: str
146
+ category: str
147
+ type: str
148
+ value: str
149
+ to_ids: bool
150
+ uuid: str
151
+ timestamp: str
152
+ distribution: str
153
+ sharing_group_id: str
154
+ comment: str
155
+ deleted: bool
156
+ disable_correlation: bool
157
+ first_seen: str
158
+ last_seen: str
159
+ event_uuid: str # new
160
+
161
+ class Config:
162
+ orm_mode = True
163
+
164
+
165
+ class GetDescribeTypesAttributes(BaseModel):
166
+ sane_defaults: dict = {}
167
+ for k, v in to_ids.items():
168
+ sane_defaults.update(
169
+ {
170
+ k: {
171
+ "default_category": default_category[k],
172
+ "to_ids": v,
173
+ }
174
+ }
175
+ )
176
+
177
+ types: list[str] = list(mapper_val_safe_clsname.keys())
178
+
179
+ categories: list[str] = [member.value for member in AttributeCategories]
180
+
181
+ category_type_mappings: dict = inverted_categories
182
+
183
+
184
+ class GetDescribeTypesResponse(BaseModel):
185
+ result: GetDescribeTypesAttributes
186
+
187
+ class Config:
188
+ orm_mode = True
189
+
190
+
191
+ class GetAttributeAttributes(BaseModel):
192
+ id: str
193
+ event_id: str
194
+ object_id: str
195
+ object_relation: Optional[str] = Field(..., nullable=True)
196
+ category: str
197
+ type: str
198
+ value: str
199
+ to_ids: bool
200
+ uuid: str
201
+ timestamp: str
202
+ distribution: str
203
+ sharing_group_id: str
204
+ comment: str | None = None
205
+ deleted: bool
206
+ disable_correlation: bool
207
+ first_seen: Optional[str] = Field(..., nullable=True)
208
+ last_seen: Optional[str] = Field(..., nullable=True)
209
+ event_uuid: str
210
+ tag: list[GetAttributeTag] | None = None
211
+
212
+
213
+ class GetAttributeResponse(BaseModel):
214
+ Attribute: GetAttributeAttributes
215
+
216
+ class Config:
217
+ orm_mode = True
218
+
219
+
220
+ class GetAllAttributesResponse(BaseModel):
221
+ id: str
222
+ event_id: str | None = None
223
+ object_id: str | None = None
224
+ object_relation: str | None = None
225
+ category: str | None = None
226
+ type: str
227
+ value1: str | None = None
228
+ value2: str | None = None
229
+ to_ids: bool | None = None
230
+ uuid: str | None = None
231
+ timestamp: str | None = None
232
+ distribution: str | None = None
233
+ sharing_group_id: str | None = None
234
+ comment: str | None = None
235
+ deleted: bool | None = None
236
+ disable_correlation: bool | None = None
237
+ first_seen: str | None = None
238
+ last_seen: str | None = None
239
+ value: str | None = None
240
+
241
+ @validator("sharing_group_id", always=True)
242
+ def check_sharing_group_id(cls, value: Any, values: Dict[str, Any]) -> Optional[int]: # noqa: ANN101
243
+ """
244
+ If distribution equals 4, sharing_group_id will be shown.
245
+ """
246
+ distribution = values.get("distribution", None)
247
+ if distribution == "4" and value is not None:
248
+ return value
249
+ return None
250
+
251
+ class Config:
252
+ orm_mode = True
253
+
254
+
255
+ class EditAttributeTag(BaseModel):
256
+ id: str
257
+ name: str
258
+ colour: str
259
+ exportable: str
260
+ user_id: str
261
+ hide_tag: bool
262
+ numerical_value: int
263
+ is_galaxy: bool
264
+ is_costum_galaxy: bool
265
+ local_only: bool
266
+
267
+
268
+ class EditAttributeAttributes(BaseModel):
269
+ id: str
270
+ event_id: str
271
+ object_id: str
272
+ object_relation: str | None = None
273
+ category: str
274
+ type: str
275
+ value: str
276
+ to_ids: bool
277
+ uuid: str
278
+ timestamp: str
279
+ distribution: str
280
+ sharing_group_id: str
281
+ comment: str | None = None
282
+ deleted: bool
283
+ disable_correlation: bool
284
+ first_seen: str | None = None
285
+ last_seen: str | None = None
286
+ tag: list[EditAttributeTag]
287
+
288
+
289
+ class EditAttributeResponse(BaseModel):
290
+ Attribute: EditAttributeAttributes
291
+
292
+ class Config:
293
+ orm_mode = True
294
+
295
+
296
+ class EditAttributeBody(BaseModel):
297
+ type: str | None = None
298
+ value: str | None = None
299
+ value1: str | None = None
300
+ value2: str | None = None
301
+ object_id: str | None = None
302
+ object_relation: str | None = None
303
+ category: str | None = None
304
+ to_ids: bool | None = None
305
+ uuid: str | None = None
306
+ timestamp: str | None = None
307
+ distribution: str | None = None
308
+ sharing_group_id: str | None = None
309
+ comment: str | None = None
310
+ deleted: bool | None = None
311
+ disable_correlation: bool | None = None
312
+ first_seen: str | None = None
313
+ last_seen: str | None = None
314
+
315
+ class Config:
316
+ orm_mode = True
317
+
318
+
319
+ class DeleteSelectedAttributeResponse(BaseModel):
320
+ saved: bool
321
+ success: bool
322
+ name: str
323
+ message: str
324
+ url: str
325
+ id: str
326
+
327
+ class Config:
328
+ orm_mode = True
329
+
330
+
331
+ class DeleteSelectedAttributeBody(BaseModel):
332
+ id: str # id = "all" deletes all attributes in the event
333
+ allow_hard_delete: bool | None = None
334
+
335
+ class Config:
336
+ orm_mode = True
337
+
338
+
339
+ class DeleteAttributeResponse(BaseModel):
340
+ message: str
341
+
342
+ class Config:
343
+ orm_mode = True
344
+
345
+
346
+ class AddRemoveTagAttributeResponse(BaseModel):
347
+ saved: bool
348
+ success: Optional[str]
349
+ check_publish: Optional[bool]
350
+ errors: Optional[str]
351
+
352
+ class Config:
353
+ orm_mode = True
354
+
355
+
356
+ class AddAttributeAttributes(BaseModel):
357
+ id: str
358
+ event_id: str
359
+ object_id: str
360
+ object_relation: Optional[str] = Field(..., nullable=True)
361
+ category: str
362
+ type: str
363
+ value: str
364
+ value1: str
365
+ value2: str
366
+ to_ids: bool
367
+ uuid: str
368
+ timestamp: str
369
+ distribution: str
370
+ sharing_group_id: str
371
+ comment: str | None = None
372
+ deleted: bool
373
+ disable_correlation: bool
374
+ first_seen: str | None = None
375
+ last_seen: str | None = None
376
+ attribute_tag: list[str] | None = Field(default_factory=list, alias="AttributeTag")
377
+
378
+
379
+ class AddAttributeResponse(BaseModel):
380
+ Attribute: AddAttributeAttributes
381
+
382
+ class Config:
383
+ orm_mode = True
384
+
385
+
386
+ class AddAttributeBody(BaseModel):
387
+ type: literal_valid_attribute_types
388
+ value: str | None = None
389
+ value1: str | None = None
390
+ value2: str | None = None
391
+ event_id: str | None = None
392
+ object_id: str | None = None
393
+ object_relation: str | None = None
394
+ category: str | None = None
395
+ to_ids: bool | None = None
396
+ uuid: str | None = None
397
+ timestamp: str | None = None
398
+ distribution: str | None = None
399
+ sharing_group_id: str | None = None
400
+ comment: str | None = None
401
+ deleted: bool | None = None
402
+ disable_correlation: bool | None = None
403
+ first_seen: str | None = None
404
+ last_seen: str | None = None
405
+
406
+ @root_validator
407
+ def ensure_value_or_value1_is_set(cls, data: dict[str, Any]) -> Optional[dict[str, Any]]: # noqa: ANN101
408
+ required_values: list[str] = [str(data.get("value")), str(data.get("value1"))]
409
+ if all(item is None for item in required_values):
410
+ raise ValueError("value or value1 has to be set")
411
+ return data
412
+
413
+
414
+ GetAttributeStatisticsTypesResponseAttrs = {x: Field(default=None) for x in mapper_val_safe_clsname.keys()}
415
+ GetAttributeStatisticsTypesResponseAttrs["__annotations__"] = {x: str | None for x in mapper_val_safe_clsname.keys()}
416
+ GetAttributeStatisticsTypesResponse = type(
417
+ "GetAttributeStatisticsTypesResponse", (BaseModel,), GetAttributeStatisticsTypesResponseAttrs
418
+ )
419
+
420
+
421
+ class GetAttributeStatisticsCategoriesResponse(BaseModel):
422
+ antivirus_detection: str = Field(alias="Antivirus detection")
423
+ artifacts_dropped: str = Field(alias="Artifacts dropped")
424
+ attribution: str = Field(alias="Attribution")
425
+ external_analysis: str = Field(alias="External analysis")
426
+ financial_fraud: str = Field(alias="Financial fraud")
427
+ internal_reference: str = Field(alias="Internal reference")
428
+ network_activity: str = Field(alias="Network activity")
429
+ other: str = Field(alias="Other")
430
+ payload_delivery: str = Field(alias="Payload delivery")
431
+ payload_installation: str = Field(alias="Payload installation")
432
+ payload_type: str = Field(alias="Payload type")
433
+ persistence_mechanism: str = Field(alias="Persistence mechanism")
434
+ person: str = Field(alias="Person")
435
+ social_network: str = Field(alias="Social network")
436
+ support__tool: str = Field(alias="Support Tool")
437
+ targeting_data: str = Field(alias="Targeting data")
438
+
439
+ class Config:
440
+ orm_mode = True
@@ -0,0 +1,123 @@
1
+ from datetime import datetime
2
+
3
+ from pydantic import BaseModel, PositiveInt, conint
4
+
5
+
6
+ class SearchGetAuthKeysResponseItemUser(BaseModel):
7
+ id: str
8
+ email: str
9
+
10
+
11
+ class ViewAuthKeyResponseWrapper(BaseModel):
12
+ id: str
13
+ uuid: str
14
+ authkey_start: str
15
+ authkey_end: str
16
+ created: datetime
17
+ expiration: int
18
+ read_only: bool
19
+ user_id: str
20
+ comment: str
21
+ allowed_ips: list[str] | None = None
22
+ unique_ips: list[str] | None = []
23
+
24
+
25
+ class ViewAuthKeysResponse(BaseModel):
26
+ AuthKey: ViewAuthKeyResponseWrapper
27
+ User: SearchGetAuthKeysResponseItemUser
28
+
29
+
30
+ class SearchGetAuthKeysResponseItemAuthKey(BaseModel):
31
+ id: str
32
+ uuid: str
33
+ authkey_start: str
34
+ authkey_end: str
35
+ created: str
36
+ expiration: str
37
+ read_only: bool
38
+ user_id: str
39
+ comment: str | None
40
+ allowed_ips: list[str] | None = None
41
+ unique_ips: list[str] | None = []
42
+
43
+
44
+ class SearchGetAuthKeysResponseItem(BaseModel):
45
+ AuthKey: SearchGetAuthKeysResponseItemAuthKey
46
+ User: SearchGetAuthKeysResponseItemUser
47
+
48
+ class Config:
49
+ orm_mode = True
50
+
51
+
52
+ class SearchAuthKeyBody(BaseModel):
53
+ page: PositiveInt = 1
54
+ limit: conint(gt=0, lt=500) = 25 # type: ignore
55
+ id: str | None = None
56
+ uuid: str | None = None
57
+ authkey_start: str | None = None
58
+ authkey_end: str | None = None
59
+ created: str | None = None
60
+ expiration: str | None = None
61
+ read_only: bool | None = None
62
+ user_id: str | None = None
63
+ comment: str | None = None
64
+ allowed_ips: str | list[str] | None = None
65
+ last_used: str | None = None # deprecated
66
+
67
+
68
+ class EditAuthKeyResponseAuthKey(BaseModel):
69
+ id: str
70
+ uuid: str
71
+ authkey_start: str
72
+ authkey_end: str
73
+ created: str
74
+ expiration: str
75
+ read_only: bool
76
+ user_id: str
77
+ comment: str
78
+ allowed_ips: str | None = None
79
+
80
+
81
+ class EditAuthKeyResponseUser(BaseModel):
82
+ id: str
83
+ org_id: str
84
+
85
+
86
+ class EditAuthKeyResponse(BaseModel):
87
+ AuthKey: EditAuthKeyResponseAuthKey
88
+ User: EditAuthKeyResponseUser
89
+
90
+
91
+ class EditAuthKeyBody(BaseModel):
92
+ read_only: bool | None = None
93
+ comment: str | None = None
94
+ allowed_ips: list[str] | None = None
95
+ expiration: int | None = None
96
+
97
+
98
+ class AddAuthKeyResponseAuthKey(BaseModel):
99
+ id: str
100
+ uuid: str
101
+ authkey_start: str
102
+ authkey_end: str
103
+ created: str
104
+ expiration: str | None = "0"
105
+ read_only: bool
106
+ user_id: str
107
+ comment: str | None = None
108
+ allowed_ips: list[str] | None = None
109
+ unique_ips: list[str]
110
+ authkey_raw: str
111
+
112
+
113
+ class AddAuthKeyResponse(BaseModel):
114
+ AuthKey: AddAuthKeyResponseAuthKey
115
+
116
+
117
+ class AddAuthKeyBody(BaseModel):
118
+ uuid: str | None = None
119
+ read_only: bool | None = None
120
+ user_id: int | None = None
121
+ comment: str | None = None
122
+ allowed_ips: list[str] | None = None
123
+ expiration: int | str | None = 0
@@ -3,9 +3,8 @@ from enum import Enum
3
3
  from pydantic import BaseModel
4
4
 
5
5
 
6
- class LoginType(Enum):
7
- PASSWORD = "password"
8
- IDENTITY_PROVIDER = "idp"
6
+ class TokenResponse(BaseModel):
7
+ token: str
9
8
 
10
9
 
11
10
  class IdentityProviderInfo(BaseModel):
@@ -16,6 +15,24 @@ class IdentityProviderInfo(BaseModel):
16
15
  orm_mode = True
17
16
 
18
17
 
18
+ class LoginType(Enum):
19
+ PASSWORD = "password"
20
+ IDENTITY_PROVIDER = "idp"
21
+
22
+
23
+ class StartLoginBody(BaseModel):
24
+ email: str
25
+
26
+
27
+ class PasswordLoginBody(BaseModel):
28
+ email: str
29
+ password: str
30
+
31
+
32
+ class ExchangeTokenLoginBody(BaseModel):
33
+ exchangeToken: str
34
+
35
+
19
36
  class StartLoginResponse(BaseModel):
20
37
  loginType: LoginType
21
38
  identityProviders: list[IdentityProviderInfo] = []
@@ -13,19 +13,3 @@ class TagAttributesResponse(BaseModel):
13
13
  is_galaxy: bool | None = None
14
14
  is_custom_galaxy: bool | None = None
15
15
  local_only: bool | None = None
16
-
17
-
18
- class TagViewResponse(TagAttributesResponse):
19
- count: int
20
- attribute_count: int
21
-
22
-
23
- class TagResponse(BaseModel):
24
- Tag: TagAttributesResponse
25
-
26
-
27
- class TagGetResponse(BaseModel):
28
- Tag: list[TagAttributesResponse]
29
-
30
- class Config:
31
- orm_mode = True